Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在EclipseLink JPQL查询中指定模式?_Java_Jpa_Jakarta Ee_Jpql - Fatal编程技术网

Java 如何在EclipseLink JPQL查询中指定模式?

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

当我执行下面的查询时,我会得到一个异常。如何在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查询中指定模式

架构配置不适用于查询本身。它是在数据源中配置的

记住你实际上是在写(而不是)。因此,可以针对实体而不是表编写查询。话虽如此,我们还是希望您使用实体名和实体字段,而不是表名和表列

您应该使用
profile
(大写
p
),而不是
profile

从配置文件p中选择p,其中p.mobile\u no=:mobileNo
还要确保
mobile\u no
Profile
实体中字段的名称(而不是数据库表中列的名称)