我正在阅读文档,并通过多实体查询了解了有关本机SQL的这一点。 http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch13.html#d5e3571具体来说,这部分:
或者,您可以显式列出列,但即使在这种情况下,Hibernate也会为每个属性注入SQL列别名。列别名的占位符只是表别名限定的属性名称。在以下示例中,您将从其他表(cat_log)中检索Cats及其母亲,并将其从映射元数据中声明的表中检索。您甚至可以在where子句中使用属性别名。
String sql = "SELECT ID as {c.id}, NAME as {c.name}, " +
"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} " +
"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID";
List loggedCats = sess.createSQLQuery(sql)
.addEntity("cat", Cat.class)
.addEntity("mother", Cat.class).list()
我想知道的是addEntity()行中的“cat”和“mother”。在查询中没有特别提到cat not mother,所以我不确定那些是指什么。
我正在尝试运行类似的本机SQL查询,从四个不同的实体(在SQL中加入)返回属性,但是在“无法读取结果集中的列值”错误时会出现阻塞。
任何帮助将不胜感激。谢谢!