如何在 EclipseLink JPQL 查询中指定架构?
How do I specify the schema in EclipseLink JPQL query?
当我执行下面的查询时,我得到了异常。如何在 JPQL 查询中指定模式。我的数据库模式是 public。数据库是 PostgreSQL。
这是我的查询:
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)
How do I specify the schema in a JPQL query?
架构配置不低于查询本身。它在数据源中配置。
请记住,您实际上是在写 JPQL (and not SQL)。因此,您针对实体而不是针对 table 编写查询。话虽如此,您应该使用实体名称和实体字段而不是 table 名称和 table 列。
而不是profile
,你应该使用Profile
(大写P
):
SELECT p FROM Profile p WHERE p.mobile_no = :mobileNo
还要确保 mobile_no
是您 Profile
实体中的字段名称(而不是数据库 table 中的列名称)。
当我执行下面的查询时,我得到了异常。如何在 JPQL 查询中指定模式。我的数据库模式是 public。数据库是 PostgreSQL。
这是我的查询:
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)
How do I specify the schema in a JPQL query?
架构配置不低于查询本身。它在数据源中配置。
请记住,您实际上是在写 JPQL (and not SQL)。因此,您针对实体而不是针对 table 编写查询。话虽如此,您应该使用实体名称和实体字段而不是 table 名称和 table 列。
而不是profile
,你应该使用Profile
(大写P
):
SELECT p FROM Profile p WHERE p.mobile_no = :mobileNo
还要确保 mobile_no
是您 Profile
实体中的字段名称(而不是数据库 table 中的列名称)。