多對多關係,我有一個類如下:ORM - 上MappedSuperclass
AnimalClass [Id, Name, Set<Tag>]
|
+-- FishClass [FishSpecific]
+-- MammalClass [MammalSpecific]
Tag [Name]
因此,任何動物可以有任意數量相關聯的標誌。
對於我在AnimalClass使用:
@JoinTable(name="Animal_Tag")
@JoinColumn(name="animal_id", referencedColumnName="id", nullable=false)
@OneToMany(cascade=CascadeType.ALL)
@Getter
protected Set<Tag> tags = new HashSet<Tag>();
我的問題是,Hibernate的創建MN表:
Animal_Tag [FishClass_id, MammalClass_id, Tag_id].
我寧願有某種枚舉爲:
Animal_Tag [Animal_id, AnimalTypeEnumeration[ Fish | Mammal ], Tag_id].
謝謝!
我不能使用超類作爲@Entity,因爲模式事實上要複雜得多(4個繼承類加入其他繼承類)。問題是我在這裏試圖達到的是與我想要用類的其他部分實現的完全相反 - 在這裏我想要Animal_Tag,但是在其他變量中,我需要爲inst完全分離。魚_照片和哺乳動物_照片。 – 2012-01-29 21:57:31
您可以通過在魚類和哺乳動物類中聲明它們的變量,而不是基類來分離魚類和哺乳動物的照片。你可以有一個映射的超類,它是一個實體的孩子嗎?你可以有一個動物實體,然後是一個擴展它的脊椎動物映射超類,然後魚和動物可以擴展它。這可能有點麻煩,但它可能會解決問題。 – 2012-01-29 22:36:10