MyTable是我的Oracle数据库中的一个表,它有一个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中的所有字段,以及公司表中的公司名称)
谢谢
答案 0 :(得分:1)
如果您不想使用自定义查询,将提取策略设置为EAGER
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="CMP_ID", referencedColumnName="CMP_ID", nullable=false)
private Company company;
只是一个建议:如果你有多个@JoinColumn,更喜欢使用@JoinColumns。否则,只使用@JoinColumn。请记住,HQL查询会覆盖默认的提取策略。
答案 1 :(得分:0)
这就是hibernate的工作方式。有关详细信息,请参阅http://www.javalobby.org/articles/hibernate-query-101/。