我需要通过连接3个不同的表来获取6列。我已经在实体类的顶部将它们声明为NamedNativequery,并且使用了JPA创建命名查询方法。当我尝试获取结果集时,我得到的是数组对象列表,而不是POJO类型的对象列表。为了将结果集映射到外部POJO,我应该定义任何外部映射吗?
最佳答案
当然可以。这应该有助于:
@NamedNativeQuery(query = "SELECT t1.col1, t2.col2 FROM t1 JOIN t2 ON ...", name = "MyNamedQuery", resultSetMapping = "MyPojoMapper")
@SqlResultSetMapping(name = "MyPojoMapper", classes = @ConstructorResult(
targetClass = MyPojo.class,
columns = {
@ColumnResult(name = "col1", type = String.class),
@ColumnResult(name = "cols", type = String.class)
}))
然后按如下方式使用它:
NativeQuery query = session.getNamedNativeQuery("MyNamedQuery");
MyPojo result = (MyPojo) query.getSingleResult();