1

MyTable 是我的 Oracle DB 中的一个表,它有一个 CMP_ID 来加入 COMPANIES 表。

这是Java实现:

public class MyTable implements Serializable {
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns( { @JoinColumn(name = "CMP_ID", referencedColumnName = "CMP_ID", nullable = false) })
@XmlTransient
Company company;
...
}

在我的 JSP 页面中,我设法显示了 MyTable:

${MyTable.company.cmpName}

但是 Hibernate 生成了 2 个 SELECT :一个用于 MyObject ,另一个用于验证公司名称。

如何使用 Hibernate 仅在一个查询中获取我想要的所有信息?(MyTable 中的所有字段,以及 Companies 表中的公司名称)

谢谢你

4

2 回答 2

1

如果您不想使用自定义查询,请将获取策略设置为 EAGER

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="CMP_ID", referencedColumnName="CMP_ID", nullable=false)
private Company company;

只是一个建议:如果您有多个 @JoinColumn,则更喜欢使用 @JoinColumns。否则,只使用@JoinColumn。请记住,HQL 查询会覆盖默认的获取策略。

于 2010-10-03T15:47:39.543 回答
0

这就是休眠的工作方式。有关详细信息,请参阅http://www.javalobby.org/articles/hibernate-query-101/

于 2010-10-03T13:31:45.007 回答