gpt4 book ai didi

jpa - 在@ConstructorResult 的情况下放置@SqlResultSetMapping 的位置

转载 作者:行者123 更新时间:2023-12-04 03:37:06 26 4
gpt4 key购买 nike

我正在尝试使用 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 : 把它放在类路径中的任何类
  • 休眠 : 把它放在任何用@Entity 注释的类中;事实上,当我把它放在其他地方时,我能够重现错误:

    org.hibernate.MappingException: Unknown SqlResultSetMapping [ResultMapping]

  • 使用 EclipseLink 2.5.2、Hibernate 4.3.8.Final 测试

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

    关于jpa - 在@ConstructorResult 的情况下放置@SqlResultSetMapping 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29636004/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com