Hibernate 有可能用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

我已在此处找到任务的解决方案:。 问题包含混合了两种继承策略的示例:使用单个表连接。 但是,是否可以将此注释映射转换为XML映射

@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?
。。。