Jpa HTTP状态500-请求处理失败;嵌套异常是异常[EclipseLink-4002]

Jpa HTTP状态500-请求处理失败;嵌套异常是异常[EclipseLink-4002],jpa,eclipselink,Jpa,Eclipselink,我现在正在和JPA eclipselink一起工作,并且喜欢用eclipselink连接到我的数据库 我的数据库中有一些用于de表的类,还有一个用于获取条目的查询: final Query query = entityManager.createQuery("SELECT q FROM FDC_DBCHANGE q ORDER BY q.CHANGE_ID"); 我为我的桌子上了一些课: FDC_DBCHANGE package com.bechtle.dbchanges.model; im

我现在正在和JPA eclipselink一起工作,并且喜欢用eclipselink连接到我的数据库

我的数据库中有一些用于de表的类,还有一个用于获取条目的查询:

final Query query = entityManager.createQuery("SELECT q FROM FDC_DBCHANGE q ORDER BY q.CHANGE_ID");
我为我的桌子上了一些课:

FDC_DBCHANGE

package com.bechtle.dbchanges.model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class FDC_DBCHANGE {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private long CHANGE_ID;
    private String CHANGE_NAME;
    private String CHANGE_DATE;
    private int CHANGE_NUMBER;

    @OneToMany(mappedBy = "FDC_DBCHANGE")
    private final List<FDC_EXECUTED> checkBoxes = new ArrayList<FDC_EXECUTED>();

public String getChangeName() {
    return CHANGE_NAME;
}

public void setChangeName(final String pChangeName) {
    CHANGE_NAME = pChangeName;
}

public String getChangeDate() {
    return CHANGE_DATE;
}

public void setChangeDate(final String pChangeDate) {
    CHANGE_DATE = pChangeDate;
}

public int getChangeNumber() {
    return CHANGE_NUMBER;
}

public void setChangeNumber(final int pChangeNumber) {
    CHANGE_NUMBER = pChangeNumber;
}

public List<FDC_EXECUTED> getCheckBoxes() {
    return checkBoxes;
}

@Override
public String toString() {
    return "FDC_DBCHANGE [CHANGE_NAME=" + CHANGE_NAME + ", CHANGE_DATE="
            + CHANGE_DATE + "CHANGE_NUMBER=" + CHANGE_NUMBER + "]";
}
}
和FDC_系统

package com.bechtle.dbchanges.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class FDC_SYSTEM {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int SYSTEM_ID;
private String NAME;
private FDC_EXECUTED fdcexecuted;

public String getName() {
    return NAME;
}

public void setName(final String pName) {
    NAME = pName;
}

@OneToMany(mappedBy = "FED_SYSTEM")
public FDC_EXECUTED getExecuted() {
    return fdcexecuted;
}

public void setExecuted(final FDC_EXECUTED pExecuted) {
    fdcexecuted = pExecuted;
}
}
当我在Tomcat上运行它时,出现以下异常:

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是异常[EclipseLink-4002](Eclipse持久性服务-2.5.0.v20130507-3faac2b):org.Eclipse.Persistence.exceptions.DatabaseException 内部异常:java.sql.SQLSyntaxErrorException:ORA-00904:“FDC_DBCHANGE_CHANGE_ID”:无效标识符

错误代码:904 调用:从执行的FDC_中选择条目_ID、FDC_DBCHANGE_CHANGE_ID、FDC_SYSTEM_SYSTEM_ID(FDC_DBCHANGE_CHANGE_ID=?) 绑定=>[1参数绑定] Query:ReadAllQuery(name=“checkbox”referenceClass=FDC\u EXECUTED sql=“从执行的FDC\u中选择条目ID、FDC\u DBCHANGE\u CHANGE\u ID、FDC\u SYSTEM\u SYSTEM\u ID(FDC\u DBCHANGE\u CHANGE\u ID=?)) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:932) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816) javaservlet.http.HttpServlet.service(HttpServlet.java:620) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801) javaservlet.http.HttpServlet.service(HttpServlet.java:727)

Eclipselink尝试从执行的FDC_中运行SQL语句SELECT ENTRY_ID、FDC_DBCHANGE_CHANGE_ID、FDC_SYSTEM_SYSTEM_ID,其中(FDC_DBCHANGE_CHANGE_ID=?)

不是从FDC中选择条目ID,更改ID系统ID,而是在其中执行(更改ID=?)

我不知道为什么

我希望有人能帮助我,并为我糟糕的英语道歉


黑曜石战士

好的,问题解决了,它的原因是日食需要一个我没有接触到的OID,这就是问题所在

package com.bechtle.dbchanges.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class FDC_SYSTEM {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int SYSTEM_ID;
private String NAME;
private FDC_EXECUTED fdcexecuted;

public String getName() {
    return NAME;
}

public void setName(final String pName) {
    NAME = pName;
}

@OneToMany(mappedBy = "FED_SYSTEM")
public FDC_EXECUTED getExecuted() {
    return fdcexecuted;
}

public void setExecuted(final FDC_EXECUTED pExecuted) {
    fdcexecuted = pExecuted;
}
}