Hibernate 有可能用XML做这样的映射吗?
我已在此处找到任务的解决方案:。 问题包含混合了两种继承策略的示例:使用单个表连接。 但是,是否可以将此注释映射转换为XML映射Hibernate 有可能用XML做这样的映射吗?,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,我已在此处找到任务的解决方案:。 问题包含混合了两种继承策略的示例:使用单个表连接。 但是,是否可以将此注释映射转换为XML映射 @Entity @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "animals") public abstract class Animal { ... @MappedSuperclass @Inheritance(strategy = InheritanceType.SINGLE_TAB
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "animals")
public abstract class Animal { ...
@MappedSuperclass
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
public abstract class Mammal extends Animal { ...
@Entity
@Table(name = "mammals")
@PrimaryKeyJoinColumn(name = "mammal_id")
@DiscriminatorValue(value = "dog")
public class Dog extends Mammal { ...
@Entity
@Table(name = "mammals")
@PrimaryKeyJoinColumn(name = "mammal_id")
@DiscriminatorValue(value = "cat")
public class Cat extends Mammal { ...
对不起,昨天我刚刚发布了一些从一级继承概念化的代码摘录。 您遇到的问题是由以下原因引起的:
<discriminator column="type" type="string"/>
不能放在下面,也不能嵌套。我今天尝试运行类似的代码来实现您可能需要的功能。我试图在下面模拟一个,但不会以这种方式工作
所以我唯一能想到的就是在动物和哺乳动物之间建立一对一的联系。这是我尝试过的代码,对于这个概念来说可能看起来很尴尬
<hibernate-mapping>
<class name="bean.Animal" table="animal">
<id name="id" type="java.lang.Integer">
<column name="id" length="50" scale="0" />
</id>
<many-to-one name="mammal"
column="mammal_id"
not-null="true"/>
</class>
<class name="bean.Mammal" table="mammal">
<id name="mammal_id" type="java.lang.Integer">
<column name="mammal_id" length="50" scale="0" />
</id>
<discriminator column="type" type="string"/>
<subclass name="bean.Dog" extends="bean.Mammal" discriminator-value="dog">
</subclass>
<subclass name="bean.Cat" extends="bean.Mammal" discriminator-value="cat">
</subclass>
</class>
结果表为:
+------------------------------+
|Tables |
+------------------------------+
|animal |
|mammal |
+------------------------------+
+------------------------------+
|桌子|
+------------------------------+
|畜生|
|哺乳动物|
+------------------------------+
这些表中的模式是
+------------------------------+
|animal |
+------------------------------+
|id |
|mammal_id |
+------------------------------+
+------------------------------+
|mammal |
+------------------------------+
|mammal_id |
|type |
+------------------------------+
+------------------------------+
|畜生|
+------------------------------+
|身份证|
|哺乳动物|
+------------------------------+
+------------------------------+
|哺乳动物|
+------------------------------+
|哺乳动物|
|类型|
+------------------------------+
希望这会有所帮助。顺便说一句,我仍然想知道,既然您有了解决方案,为什么不使用注释来解决这个问题,只是好奇:)。您尝试过运行类似的映射吗?我的输出在
错误记录器上停止:57-错误解析XML(215):元素类型“joined subclass”的内容必须匹配(meta*,subselect?
。。。