多对多关系,我有一个类如下: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