gpt4 book ai didi

java - JPA : Auto Increment ID with Oracle Database

转载 作者:行者123 更新时间:2023-12-02 02:39:52 28 4
gpt4 key购买 nike

我定义了一个具有生成 ID 值的实体,但是当我尝试执行插入时出现此错误:

    10:33:32,202 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-8) SQL Error: 2289, SQLState: 42000
10:33:32,203 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-8) ORA-02289: sequence does not exist
10:33:32,205 ERROR [org.jboss.as.ejb3.invocation] (default task-8) WFLYEJB0034: EJB Invocation failed on component javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Caused by: java.sql.SQLSyntaxErrorException: ORA-02289: sequence does not exist

实体:

@Entity
@Table(name = "TYPEDEM")
public class TypeDem {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "ID")
private long id;
@Column(name = "CODE")
private String code;
@Column(name = "LABEL")
..
}

类别:

@Override
public TypeDem save(TypeDem typeDem) {
entityManager.persist(typeDem);
return typeOfDemand;
}

在调试中,我看到 id 的值为空

最佳答案

身份生成器

它用于 Sybase、My SQL、MS SQL Server、DB2 和 HypersonicSQL,以支持 id 列。返回的id类型为short、int或long。

IDENTITY 类型(包含在 SQL:2003 标准中)受以下支持:

SQL 服务器MySQL(自动增量)数据库2HSQL数据库IDENTITY 生成器允许整数/bigint 列根据需要自动递增。增量过程发生在当前正在运行的事务之外,因此回滚可能最终会丢弃已经分配的值(可能会发生值间隙)。

对于Oracle,请使用以下代码@GenerateValue(strategy=GenerationType.AUTO)

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "ID")

关于java - JPA : Auto Increment ID with Oracle Database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670510/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com