当前位置: 首页 > 知识库问答 >
问题:

无法使用实体管理器插入 ORA00904

宣煜
2023-03-14

我对EJB的概念非常陌生。我正在尝试使用实体类将前端的值插入到数据库中,但每次我这样做时,我都会收到此错误:

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10657)
at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:774)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

这是我的实体类:

@Entity
@Table(name="EMPLOYEE", schema="SYSTEM")
public class Employee {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    private int employeeId;
    private String employeeName;
    private int employeeAge;
    private String employeeAddress;
    private String employeePhone;
    private String employeeEmailAddress;

    @Column(name="EMPLOYEE_ID", nullable=false, insertable=true, updatable=false)
    public int getEmployeeId() {
        return employeeId;
    }
    public void setEmployeeId(int employeeId) {
        this.employeeId = employeeId;
    }

    @Column(name="EMPLOYEE_NAME", nullable=false, insertable=true, updatable=false)
    public String getEmployeeName() {
        return employeeName;
    }
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }

    @Column(name="EMPLOYEE_AGE", nullable=false, insertable=true, updatable=false)
    public int getEmployeeAge() {
        return employeeAge;
    }
    public void setEmployeeAge(int employeeAge) {
        this.employeeAge = employeeAge;
    }

    @Column(name="EMPLOYEE_ADDRESS", nullable=false, insertable=true, updatable=false)
    public String getEmployeeAddress() {
        return employeeAddress;
    }
    public void setEmployeeAddress(String employeeAddress) {
        this.employeeAddress = employeeAddress;
    }

    @Column(name="EMPLOYEE_PHONE", nullable=true, insertable=true, updatable=true)
    public String getEmployeePhone() {
        return employeePhone;
    }
    public void setEmployeePhone(String employeePhone) {
        this.employeePhone = employeePhone;
    }

    @Column(name="EMPLOYEE_EMAIL_ADDRESS", nullable=false, insertable=true, updatable=false)
    public String getEmployeeEmailAddress() {
        return employeeEmailAddress;
    }
    public void setEmployeeEmailAddress(String employeeEmailAddress) {
        this.employeeEmailAddress = employeeEmailAddress;
    }

    public Employee(){
        super();
    }

我使用的是seam 2.2.1、EJB 3和Oracle 10g。

请帮助我解决此错误。

共有1个答案

刘昌翰
2023-03-14

字段和访问器方法中的注释不应混合使用。根据JPA规范,后果是未定义的:

未定义在实体层次结构中的字段和属性上混合放置批注而不显式指定 Access 批注的应用程序的行为。

在Hibernate的情况下,在中观察到@Id注释,并忽略包括以下内容的方法中的注释:

@Column(name="EMPLOYEE_ID", nullable=false, insertable=true, updatable=false)

解决方案是将所有注释移动到字段(或全部移动到方法)。

 类似资料:
  • 编辑:堆栈跟踪如下: 下面是persistence.xml:

  • 我使用的是Spring BOOT应用程序,它将信息存储在数据库中。我得到错误: org.SpringFramework.transaction.CanNotCreateTransactionException:无法为事务打开JPA EntityManager 还尝试了AutoReconnect=true,在db URL中提供了端口号。

  • 我试图使用spring boot将EntityManager注释注入到我的DAO中,但是得到一个< code > InvalidDataAccessApiUsageException 消息,说没有可用的事务EntityManager。我的印象是,只要Spring Boot从< code>application.yml中获得了我的数据源信息,并且我用< code>@PersitenceContext

  • 我刚刚开始使用Spring ROO,并使用数据库逆向工程命令生成了我的实体类。然而每当我试图调用生成的实体类中的一个CRUD方法时,我总是得到这个异常:Java . lang . illegalstateexception:实体管理器没有被注入(Spring Aspects JAR是否被配置为AJC/AJDT方面库?) 我怀疑(通过查看生成的文件)EntityManager没有被注入到类中。你能告

  • 问题内容: 我在JavaFx fxml应用程序中都使用了数据库中的Persistence单元和Entity类,我已成功将所有表作为实体导入到Model中,问题是当我尝试插入实体时出现异常和错误,这是我的整个代码 这是当我按下按钮时(当handleButtonAction被触发时)我得到的全部错误。 我在已经存在的类似问题中找不到答案,无法确切知道我所缺少的内容,在此先感谢您的帮助。 问题答案: 为

  • 我有一个在Eclipse中定义的非常基本的JavaEE应用程序(一个EJB,一个带有PrimeFaces的网页,一个JPA实体)。它有四个项目,一个用于EAR,一个用于EJB,一个用于JPA,一个用于Web部件。问题是,我试图在JPA项目的persistence.xml中配置HiberNate作为持久化框架,但它并没有像我预期的那样完全工作。在我的EJB(@Statless)中,我可以通过两种方式