DOM4J createQuery并不急于获取

时间:2011-06-02 17:31:34

标签: dom4j

我有一个实体,它包含一个OneToMany关系,带有急切的提取,带有第二个实体。第二个实体有两个OneToOne关系,也有第三和第四类。 OneToOne关系是单向的。

我从DOM4J会话调用createQuery(),发送“from entity”作为HQL。在返回中,我得到第二个实体,但它只包含第三个和第四个实体的ID,而不是完整的内容。对我来说,看起来第三和第四个实体并没有被急切地抓住。我不能完全重现代码,但这里是最相关的部分。

@Entity
public class Event extends EventParent {
   @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
   @JoinColumn(name="eventId")
   @org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
   private Set<Pair> pairs=new HashSet<MarPair>();
}

@Entity
public class Pair extends PairParent {
   @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
   @org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
   private Info info;

   @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
   @org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
   private Results results;
}

@Entity
public class Info {
   private String name;
   private Date time;
}


@Entity
public class Results {
   private String name;
   private Date time;
}

最后,这是我用于查询的代码:

public void retrieve() {
   String hqlQry = "from Event";
   Session session = dom4JSessionFactory.getCurrentSession();
   Session dom4jSession = session.getSession(EntityMode.DOM4J);
   List results = dom4jSession.createQUery(hqlQuery).list();
}

正如我所提到的,从这个查询中我得到一个信息和结果值的整数,这是信息和结果表的关键,而不是从信息和结果表中检索的实际数据。

相关信息:

  • Spring 2.5.4
  • Hibernate 3.2.6
  • Hibernate Annotations 3.3.1.GA
  • dom4JSessionFactory的类型为org.springframework.orm.hibernate3.LocalSessionFactoryBean
  • 实体“Event”实际上是类层次结构中的第7个类(不知道这是否重要)

我确实遗漏了很多信息,希望没有必要。如果还有别的东西需要冒险猜测它为什么不起作用,请告诉我。

1 个答案:

答案 0 :(得分:0)

原来这是我们正在使用的Hibernate版本的一个错误。我必须做的是在Hibernate生成HBM文件后将embed-xml更改为true。这是使用“替换”ant函数完成的。