我有一个实体,它包含一个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();
}
正如我所提到的,从这个查询中我得到一个信息和结果值的整数,这是信息和结果表的关键,而不是从信息和结果表中检索的实际数据。
相关信息:
我确实遗漏了很多信息,希望没有必要。如果还有别的东西需要冒险猜测它为什么不起作用,请告诉我。
答案 0 :(得分:0)
原来这是我们正在使用的Hibernate版本的一个错误。我必须做的是在Hibernate生成HBM文件后将embed-xml更改为true。这是使用“替换”ant函数完成的。