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 如何在jpa/eclipselink中访问同一数据库中的不同表_Java_Jpa_Eclipselink - Fatal编程技术网

Java 如何在jpa/eclipselink中访问同一数据库中的不同表

Java 如何在jpa/eclipselink中访问同一数据库中的不同表,java,jpa,eclipselink,Java,Jpa,Eclipselink,我有两个实体类,比如A类和B类,以及两个相应的服务类,分别是service和BSService,这是我的持久性 <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio

我有两个实体类,比如A类和B类,以及两个相应的服务类,分别是service和BSService,这是我的持久性

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="adara" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.qaf.model.entity.Inwards</class>
    <class>com.qaf.model.entity.Stock</class>
    <properties>
      <property name="eclipselink.logging.level" value="FINE"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:./workshopDB;create=true"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

org.eclipse.persistence.jpa.PersistenceProvider
com.qaf.model.entity.Inwards
com.qaf.model.entity.Stock
现在,当我对a类进行
SELECT
查询时,它会给出结果,但当我对B类进行
SELECT
查询时,我会得到一个异常,如

【EL警告】:2015-03-16 19:40:14.196——工作单元(27187220)
线程(线程[JavaFX应用程序线程,5,main])——异常[EclipseLink-4002](Eclipse持久性服务-2.5.2.v20140319-9ad6abd):org.Eclipse.Persistence.exceptions.DatabaseException

内部异常:java.sql.SQLSyntaxErrorException:列“DispatchNo”不在FROM列表中的任何表中,或出现在联接规范中,且不在联接规范的范围内,或出现在HAVING子句中,且不在GROUP BY列表中。如果这是CREATE或ALTER TABLE语句,则“DISPATCHNO”不是目标表中的列

错误代码:30000


我是JPA的初学者,希望你们能帮助我。

如果不看实体类,很难知道问题出在哪里。乍一看,我想说在您的查询中,列名“DispatchNo”可能拼错了。如果您的B类是Stock类,您可以发布其源代码吗?谢谢你的回复@Owen,这里的列名DispatchNo在我的查询中没有拼写错误,B不是stock类。这里的问题是,我认为只有A类的实体管理器处于活动状态,而B类的实体管理器在A处于活动状态时被刷新。现在,您可以告诉我如何手动管理entity manager的状态了吗?我不确定您尝试管理的EntityManager的状态是什么,因为这是一个表级错误,是在首次访问/部署持久性单元时预先创建的。如何获取EntityManager实例,以及在类A处于活动状态时它与刷新有什么关系?打开EclipseLink日志,查看发布了哪些语句,以了解您的专栏可能不在那里的原因。