我創建了一個系統,我有一些實體具有一些常見的屬性,如地址(與街道,號碼,郵編等)和電話號碼,類型等),我不想在每個實體上重複這些列。Springboot JPA/hibernate:如何映射一個表多個實體
這裏有一個例子:
- 學生有地址和電話
- 教師有多個地址(家庭 和辦公室)和多部電話(家庭,移動,辦公)
- StaffMember 有地址和多個電話(家庭,移動和辦公室)
我在開發Ruby On Rails時使用類似的東西ic協會。我在Java/JPA/Hibernate上搜索了一些東西,並且找不到像它那樣的東西。我發現了許多關於JPA繼承的內容,但我不太明白。
你能給我一個關於如何建模和使用它的例子嗎?
編輯
閱讀我的問題後,我認爲這是不夠清晰,所以讓我在這裏添加數據庫架構,我有:
Student
-------
id bigint
name varchar
birth_date date
...
Teacher
-------
id bigint
name varchar
birth_date date
department varchar
...
StaffMember
-------
id bigint
name varchar
birth_date date
department varchar
function varchar
...
Address
-------
id bigint
street varchar
number int
...
entity_id bigint
entity_type varchar
Phone
-----
id bigint
type varchar
number varchar
...
entity_id bigint
entity_type varchar
而且兩個Address
和Phone
列entity_id
和entity_type
是對Student
,Teacher
和StaffMember
的引用。
但如何使用Hibernate/JPA映射它?
可以肯定的是:你的數據庫模式是固定的,JPA/hibernate必須適應它嗎? – larsgrefer
Hi @larsgrefer,模式不夠靈活,上面只是它認爲最好的一個例子,但我願意接受建議。 – rfsbsb
當你使用spring-boot時,只需設置'spring.jpa.generate-ddl = true'並讓hibernate爲你生成模式 – larsgrefer