ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 16.1.2\. 实体查询(Entity queries) 上面的查询都是返回标量值的,也就是从resultset中返回的“裸”数据。下面展示如何通过`addEntity()`让原生查询返回实体对象。 ``` sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class); sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class); ``` 这个查询指定: * SQL查询字符串 * 要返回的实体 假设Cat被映射为拥有ID,NAME和BIRTHDATE三个字段的类,以上的两个查询都返回一个List,每个元素都是一个Cat实体。 假若实体在映射时有一个`many-to-one`的关联指向另外一个实体,在查询时必须也返回那个实体,否则会导致发生一个"column not found"的数据库错误。这些附加的字段可以使用*标注来自动返回,但我们希望还是明确指明,看下面这个具有指向`Dog`的`many-to-one`的例子: ``` sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class); ``` 这样cat.getDog()就能正常运作。