2017-06-29 93 views
2

我正在嘗試使用Spring Boot和彈簧數據進行分配。 我有2個實體組織和位置。如何使用彈簧數據保存實體的子實體

1.Organization

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 
) 

我現在用的彈簧數據來堅持database.In正常情況下這個實體只是調用保存(組織org)方法會堅持數據,但我不知道如何將組織數據與位置一起存儲。 有人可以幫助我嗎?

回答

2

實體具有標識。 Embeddables沒有自己的身份,只能使用擁有實體進行查詢。

you Organization is @Entity lication應該是@Embeddable(因爲沒有id,它是Organization表的一部分)。

但是,根據你的表格,我認爲這不是你的情況,如果Location只是Organization的一部分並且沒有自己的生命週期(只存在於Organization內部)。如果位置的生命週期在Organization以外,它應該是實體(那麼實體的ID應爲Location),並且您需要OrganizationLocation之間的關係,這取決於您是如何使用的情況,如一對一或多對一以及使用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

+0

感謝快速回復! 在我的案例中,位置是組織的一部分,它不會擁有自己的相同存在,但它也是少數其他實體的一部分,例如汽車,人等。所以我認爲@Embeddable適用於所有這些情況以及? –

+0

是的,它適用。我寫了關於位置的@entity,就像在常見情況下一樣:)我們從開始時的Embeddable開始,在幾個月後移動到獨立實體,那時候,我們有很多數據重複的位置。 – xyz

+0

幾個其他的實體,如汽車,人等 - 考慮創建具有位置的基類並從中延伸,如果它是可以接受的 – xyz

相關問題