猿问

如何在 EclipseLink 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 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)


蛊毒传说
浏览 114回答 1
1回答

慕妹3242003

如何在 JPQL 查询中指定架构?架构配置不低于查询本身。它是在数据源中配置的。请记住,您实际上正在编写JPQL(而不是SQL)。因此,您可以针对实体而不是表编写查询。话虽如此,您应该使用实体名称和实体字段,而不是表名称和表列。而不是profile,您应该使用Profile(大写P):SELECT p FROM Profile p WHERE p.mobile_no = :mobileNo还要确保这mobile_no是实体中字段的名称Profile(而不是数据库表中列的名称)。
随时随地看视频慕课网APP

相关分类

Java
我要回答