如果是@ConstructorResult,在哪里放置@SqlResultSetMapping
Where to place @SqlResultSetMapping in case of @ConstructorResult
我正在尝试使用 jpa 的 entityManager 的 createNativeQuery 方法映射非实体 pojo。通过使用这样的东西
@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 能够识别它?
Where I am supposed to put SqlResultSetMapping so that the entityManager will able to recognize it?
据我所知,它与持久性提供程序不同:
- EclipseLink:把它放在 classpath
中的任何 class
Hibernate:放在任何用@Entity注解的class;事实上,当我把它放在别处时,我能够重现错误:
org.hibernate.MappingException: Unknown SqlResultSetMapping [ResultMapping]
使用 EclipseLink 2.5.2、Hibernate 4.3 进行测试。8.Final
一般来说,要使您的应用程序可跨 JPA 提供程序移植,最好将 SqlResultSetMapping 放在任何实体 class。
我正在尝试使用 jpa 的 entityManager 的 createNativeQuery 方法映射非实体 pojo。通过使用这样的东西
@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 能够识别它?
Where I am supposed to put SqlResultSetMapping so that the entityManager will able to recognize it?
据我所知,它与持久性提供程序不同:
- EclipseLink:把它放在 classpath 中的任何 class
Hibernate:放在任何用@Entity注解的class;事实上,当我把它放在别处时,我能够重现错误:
org.hibernate.MappingException: Unknown SqlResultSetMapping [ResultMapping]
使用 EclipseLink 2.5.2、Hibernate 4.3 进行测试。8.Final
一般来说,要使您的应用程序可跨 JPA 提供程序移植,最好将 SqlResultSetMapping 放在任何实体 class。