Java 如何在EclipseLink JPQL查询中指定模式?
当我执行下面的查询时,我会得到一个异常。如何在JPQL查询中指定模式。我的数据库架构是公共的。数据库是PostgreSQL 我的问题是:Java 如何在EclipseLink JPQL查询中指定模式?,java,jpa,jakarta-ee,jpql,Java,Jpa,Jakarta Ee,Jpql,当我执行下面的查询时,我会得到一个异常。如何在JPQL查询中指定模式。我的数据库架构是公共的。数据库是PostgreSQL 我的问题是: SELECT p FROM profile p WHERE p.mobile_no = :mobileNo 例外情况如下: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: Exception Descript
SELECT p FROM profile p WHERE p.mobile_no = :mobileNo
例外情况如下:
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Problem compiling [SELECT p FROM profile p WHERE p.mobile_no = :mobileNo].
[14, 21] The abstract schema type 'profile' is unknown.
[30, 41] The state field path 'p.mobile_no' cannot be resolved to a valid type.
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1746)
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1767)
za.co.ezimax.database.ProfileDAO.get(ProfileDAO.java:15)
za.co.ezimax.business.Business.register(Business.java:44)
za.co.ezimax.rest.DatabaseTestServlet.doGet(DatabaseTestServlet.java:87)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
如何在JPQL查询中指定模式
架构配置不适用于查询本身。它是在数据源中配置的
记住你实际上是在写(而不是)。因此,可以针对实体而不是表编写查询。话虽如此,我们还是希望您使用实体名和实体字段,而不是表名和表列
您应该使用profile
(大写p
),而不是profile
:
从配置文件p中选择p,其中p.mobile\u no=:mobileNo
还要确保mobile\u no
是Profile
实体中字段的名称(而不是数据库表中列的名称)