我目前正在学习有关JPA NamedQueries的信息,并尝试在GuestServlet中使用它:
Query getGuests = em.createNamedQuery("myq");
@SuppressWarnings("unchecked")
List<Guest> guests = getGuests.getResultList();
当我将@NamedQuery放在Entity类中时,它将起作用:
@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(或其他任何东西)根本不知道命名查询。