我正在尝试使用 Spring Boot 和 spring-data 进行作业。 我有 2 个实体组织和位置。
1.组织架构
public class Organization {
private Long id;
private String name;
private Location location;
}
public class Location {
private Double lattitude;
private Double longitude;
}
我的数据库表是这样的:
CREATE TABLE organization (
id int primary key,
organization_name varchar(255),
organization_location_lat double,
organization_location_long double
)
现在我使用 spring data 将此实体持久保存在数据库中。在正常情况下,只需调用 save(Organization org) 方法即可持久保存数据,但我不确定如何存储组织数据和位置。 有人可以帮我解决这个问题吗?
最佳答案
实体有一个身份。 Embeddables 没有自己的身份,只能使用所属实体进行查询。
您的组织是@Entity
,应用程序应该是@Embeddable
(因为没有 id ,并且它是Organization
表的一部分)。
但是,如果位置只是组织
的一部分并且没有自己的生命周期(仅存在于组织内部),那么根据您的表,我认为这不是您的情况。如果位置在Organization
之外有生命周期,它应该是实体(那么对于实体来说应该是Location
的id)并且您需要Organization
和Location
,取决于您使用的情况,例如一对一或多对一并使用 sascade 类型作为位置
public class Organization {
@Id
private Long id;
@Column
private String name;
@Embedded
private Location location;
}
@Embeddable
public class Location {
private Double lattitude;
private Double longitude;
}
参见示例https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/domain/embeddables.html
关于java - 如何使用spring-data保存实体的子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44823923/