簡體   English   中英

如何在EclipseLink JPQL查詢中指定架構?

[英]How do I specify the schema in EclipseLink JPQL query?

當我執行下面的查詢時,此后會出現異常。 如何在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 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查詢中指定架構?

模式配置不在查詢本身下面。 它在數據源中配置。

請記住,您實際上是在編寫JPQL (而不是SQL )。 因此,您是針對實體而不是針對表編寫查詢。 話雖這么說,但您應該使用實體名稱和實體字段來代替表名稱和表列。

代替profile ,您應該使用Profile (大寫P ):

SELECT p FROM Profile p WHERE p.mobile_no = :mobileNo

還要確保mobile_noProfile實體中字段的名稱(而不是數據庫表中列的名稱)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM