首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在@ConstructorResult的情况下放置@SqlResultSetMapping的位置

在@ConstructorResult的情况下放置@SqlResultSetMapping的位置
EN

Stack Overflow用户
提问于 2015-04-15 03:39:39
回答 1查看 17.1K关注 0票数 12

我正在尝试使用jpa的entityManager的createNativeQuery方法来映射一个非实体pojo。通过使用像这样的东西

代码语言:javascript
复制
@SqlResultSetMapping(name="ResultMapping", 
classes={
@ConstructorResult(
     targetClass=Employee.class,
       columns={
          @ColumnResult(name="empID", type=Long.class),
          @ColumnResult(name="empName", type=String.class),
          }
   )
}
)
public class Loader{
 private EntityManager em;

 public void load(){

   Query query = em.createNativeQuery("select empID, empName from employee",  "ResultMapping");
   List<Employee> = query.getResultList();
 }

}

public class Employee{

 private long empID;
 private String empName;
 public Employee(long empid, String empname)
 {
     this.empID = empid;
     this.empName = empname;
 }
}

我得到了unknown SqlResultSetMapping ResultMapping错误,我应该把SqlResultSetMapping放在哪里,以便entityManager能够识别它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-15 08:30:12

我应该把SqlResultSetMapping放在哪里,这样entityManager才能识别它?

据我所知,它与持久性提供者有所不同:

  • EclipseLink:将它放在classpath
  • Hibernate:中的任何类中,将它放在任何带有@Entity注释的类中;事实上,当我将它放在其他地方时,我能够重现这个错误:

org.hibernate.MappingException:未知的SqlResultSetMapping ResultMapping

使用EclipseLink 2.5.2、Hibernate 4.3.8进行测试

一般来说,为了使您的应用程序可以跨JPA提供程序移植,最好将SqlResultSetMapping放在任何实体类中。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29636004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档