3

我正在阅读文档并通过多实体查询遇到了有关本机 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() 行中的“猫”和“母亲”。查询中没有特别提到猫和母亲,所以我不确定它们指的是什么。

我正在尝试运行一个类似的本机 SQL 查询,返回来自四个不同实体(加入 SQL)的属性,但因“无法从结果集中读取列值”错误而窒息。

任何帮助,将不胜感激。谢谢!

4

0 回答 0