我使用的是选择新的语法来查询数据库中的非实体,并得到一个没有映射错误...JPA非实体没有映射错误与选择,新的语法
对象(不实体):
package user;
public class User {
private int id;
private String lastName;
private String firstName;
private String mail;
}
(P042USER)是这样创建的表:
CREATE TABLE P042USER (id INT PRIMARY KEY NOT NULL, lastname VARCHAR(100), firstname VARCHAR(100), email VARCHAR(255));
然后我想做的的要求选择新语法:
Query q = em.createQuery("SELECT NEW user.User(u.id, u.lastname, u.firstname, u.email) FROM P042USER u ORDER BY u.id");
return q.getResultList();
最后我得到了错误:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: P042USER is not mapped
当然它没有被映射,这就是为什么我用的是选择新的语法...你有什么想法吗?谢谢。
我没有一个实体,所以我把注释@SqlResultSetMapping放在哪里?顺便说一句,它看起来很复杂。我见过很多引用,其中选择新似乎工作...当我使用createNativeQuery而不是createQuery,我有另一个错误:引起:org.h2.jdbc.JdbcSQLException:列“新”没有找到; –
的确,SqlResultSetMapping只能在实体上使用,但它可以在任何实体上使用,因此您只需将它放在持久性上下文中的任意实体上即可。 –