我目前正在学习 JPA NamedQueries 并尝试在 GuestServlet 中使用它:
Query getGuests = em.createNamedQuery("myq");
@SuppressWarnings("unchecked")
List<Guest> guests = getGuests.getResultList();
当我将@NamedQuery 放在实体类中时它起作用了:
@Entity
@NamedQuery(
name="myq",
query = "SELECT g FROM Guest g")
public class Guest {
...
}
但是当我尝试在 Servlet 中使用它时,如下所示:
@WebServlet({"/GuestServlet","/guest"})
@NamedQuery(
name="myq",
query = "SELECT g FROM Guest g")
public class GuestServlet extends HttpServlet {...}
我收到以下错误:
java.lang.IllegalArgumentException: No query defined for that name [myq]
为什么我在 Servlet 中使用 @NamedQuery 时必须将它放在 Entity 类中?
最佳答案
GuestServlet 不是由您的 jpa 提供商管理的。 Hibernate(或其他)根本不知道命名查询。
关于java - 为什么我需要将@NamedQuery 放在实体类上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31982267/