始终使用 Query result 和 Object 执行本机查询,直到您在 createNativeQuery 方法中定义了 resultClass 属性。
createNativeQuery
Query createNativeQuery(java.lang.String sqlString,
java.lang.Class resultClass)
Create an instance of Query for executing a native SQL query.
Parameters:
sqlString - a native SQL query string
resultClass - the class of the resulting instance(s)
如果您有一个与查询的结果字段同名的实体,请添加 resultClass=Class.class 并会自动创建对象
您是否正在使用 2 个表之间的连接,您可以使用 @SqlResultSetMapping,如下所示。
@SqlResultSetMapping(name="ScalarAndEntities",
entities={
@EntityResult(name="org.hibernate.test.annotations.query.Night", fields = {
@FieldResult(name="id", column="nid"),
@FieldResult(name="duration", column="night_duration"),
@FieldResult(name="date", column="night_date"),
@FieldResult(name="area", column="area_id")
}),
@EntityResult(name="org.hibernate.test.annotations.query.Area", fields = {
@FieldResult(name="id", column="aid"),
@FieldResult(name="name", column="name")
})
},
columns={
@ColumnResult(name="durationInSec")
}
)
与
Query q = entityManager.createNativeQuery(sqlQuery, "ScalarAndEntities");
在此处阅读有关如何从本地查询中检索实体的更多信息,