我使用的是選擇新的語法來查詢數據庫中的非實體,並得到一個沒有映射錯誤...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只能在實體上使用,但它可以在任何實體上使用,因此您只需將它放在持久性上下文中的任意實體上即可。 –