0

我的应用程序中有这种关系:

Entry 1:n Guest

Entry.class包含以下属性:

Entry {
  ...
  List<Guest> guestList = new ArrayList<Guest>();
  ...
}

我想将此guestList属性配置为在 Hibernate 中进行延迟加载,但它不起作用。这是我所拥有的:

<class name="...." table="entry">
  <id name="id" column="entry_id" type='long'>
    <generator class="native" />
  </id>

  ...other properties...

  <list name="guestList" table="guest" cascade="all">
    <key column="entry_fk"/>
    <index column="guest_id"/>
    <one-to-many class="Guest"/>
  </list>

  ...other properties...

</class>

下面是 Guest 表模式的描述:

table : guest[guest_id,entry_fk,guestName,...]

顺便一提...

  • 我不能在这个项目中使用注释。
  • 最好,我想使用延迟加载(只要它工作)
  • 我的表中没有索引,但 Hibernate 一直要求这个定义。
4

1 回答 1

0

我对 XML 映射没有任何经验,但我看到至少两个错误:

  1. 您的字段应声明为List<Guest>,以允许 Hibernate 注入其自己的延迟加载列表实现(始终使用接口而不是创建类型是最佳实践,但 Hibernate 必须这样做)
  2. 如果是列表,则需要索引。否则,它是一个袋子。该索引应该保存列表中来宾的索引。ID 不是索引。

否则,文档中描述了一对多映射。set将示例中的替换为bag,应该没问题。

于 2012-07-25T05:54:41.087 回答