Java 如何建立;“一对多”;不带索引列的XML列表对象映射

Java 如何建立;“一对多”;不带索引列的XML列表对象映射,java,hibernate,jpa,hibernate-mapping,Java,Hibernate,Jpa,Hibernate Mapping,我可以通过使用注释来设置列表对象的“一对多”映射,但使用XML则不行。您能告诉我如何使用XML映射进行设置吗。任何帮助都将不胜感激 问题。当我使用XML映射关联一些列表对象时,是否需要“索引”列 注释映射->按预期工作: @Entity @Table(name = "ITEM") public class Item { @Id @Column(name = "ID") private Long id; @Column(name = "NAME") pr

我可以通过使用注释来设置列表对象的“一对多”映射,但使用XML则不行。您能告诉我如何使用XML映射进行设置吗。任何帮助都将不胜感激

问题。当我使用XML映射关联一些列表对象时,是否需要“索引”列

注释映射->按预期工作:

@Entity
@Table(name = "ITEM")
public class Item {

    @Id
    @Column(name = "ID")
    private Long id;

    @Column(name = "NAME")
    private String name;

    @OneToMany(targetEntity = ItemDetail.class)
    @JoinColumn(name = "ITEM_ID")
    private List<ItemDetail> itemDetails;

@Entity
@Table(name = "ITEM_DETAIL")
public class ItemDetail {

    @Id
    @Column(name = "ID")
    private Long id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "ITEM_ID")
    private Long itemId;
@实体
@表(name=“ITEM”)
公共类项目{
@身份证
@列(name=“ID”)
私人长id;
@列(name=“name”)
私有字符串名称;
@OneToMany(targetEntity=ItemDetail.class)
@JoinColumn(name=“ITEM\u ID”)
私人名单项目详情;
@实体
@表(name=“项目详细信息”)
公共类项目详细信息{
@身份证
@列(name=“ID”)
私人长id;
@列(name=“name”)
私有字符串名称;
@列(name=“ITEM\u ID”)
私有长项目ID;
XML映射->无法按预期工作。出现“分析XML时出错”错误。它似乎需要“索引列”信息:

<hibernate-mapping>
    <class name="jp.sample.entity.Item" table="ITEM">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="name" type="string">
            <column name="NAME" />
        </property>

        <list name="itemDetails" cascade="all">
            <key column="ITEM_ID" />
            <one-to-many class="jp.sample.entity.ItemDetail" />
        </list>

    </class>
</hibernate-mapping>

<hibernate-mapping>
    <class name="jp.sample.entity.ItemDetail" table="ITEM_DETAIL">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="name" type="string">
            <column name="NAME" />
        </property>
        <property name="itemId" type="java.lang.Long">
            <column name="ITEM_ID" />
        </property>
    </class>
</hibernate-mapping>

Hibernate映射XML文件中的
需要一个
,因为您告诉Hibernate您想要

如果您不关心元素在集合中的位置,则应使用
,或者如果您将Java类中的集合类型更改为
,则应使用

如果您的表没有索引列,并且您仍然希望使用
List
作为属性类型,则可以将属性映射为Hibernate
。从数据库检索行李时,行李不会保留其顺序,但可以选择对其进行排序或排序


非常感谢您的即时回复。我正在查看您提到的一个网站。我有一些问题。您能告诉我您是否有更多的时间吗?Q1.使用注释时位置有保证吗?Q2使用or时我可以使用“列表”对象吗?(老实说,“列表”比“设置”或“地图”更容易使用)JPA中的
@OneToMany
并不等同于hbm映射中的
,它更像是一个
。hbm
的JPA等价物是在
@OneToMany
注释中添加一个
@OrderColumn
。它看起来像是JPA
@OneToMany
与hbm的
相同,顺序不一致是的,正如我引用的文档所述,您可以将
列表一起使用。