我有一堂这样的课:
public class BookAuthor {
private Book book;
private Author author;
}
Book 和 Author 被定义为实体。
当我尝试检索数据时,这样:
final String selectCols = "NEW BookAuthor(b,a)";
final org.hibernate.Query q = createQuery(selectCols, params, filters);
result = q.list();
return result;
当 Hibernate 执行“q.list()”时,它会执行一次查询以检索书籍和作者的 ID,然后迭代结果以获取有关作者和书籍的信息。也就是说,在我的日志中,会有这样的东西:
select a.ID, b.ID
from authors a , books b
然后对于每一行:
select a.ID, a.name
where a.ID = ?
select b.ID, b.title
where b.ID = ?
有没有办法告诉 Hibernate 用一个查询来获得结果以提高这样的性能?:
select a.ID, a.name, b.ID, b.title
from authors a , books b
提前致谢。
编辑 :
实体的定义是指它们的表和列名,例如:
public static final String TABLE_NAME = "AUTHOR";
@Column(name = "id", nullable = false)
protected Long id;
我认为作者和书籍之间没有数据库约束(这只是实际实体的一个示例,但假设可能有一些没有作者的匿名书籍)。感谢 JB Nizet,稍后我将检索查询并在此处发布。