gpt4 book ai didi

java - Oracle 中没有序列的@GenelatedValue

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:14 25 4
gpt4 key购买 nike

我创建了一个触发器,以便每次将我的实体 ID 插入到我的 Oracle 数据库中时,都会自动生成一个序列。

问题在于为 Hibernate/JPA 注释这些实体:我需要定义一个 @GenerateValue 注释,但我不想指定序列名称 - 这样做将使 Hibernate 查询先序列,再插入,这是触发器已经完成的工作。

有什么办法可以在我提出的场景中跳过 @GenerateValue 中的这个序列吗?

如果未提供 id,则会出现异常:

org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): Pattern

模式类:

@Entity
@Table(name = "PATTERN")
public class Patron extends HistoricoAbstractEntity {

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@Column(name = "ID_PATTERN")
private Integer idPattern;

@Column
private String description;

@Column(name = "NEGATIVE")
private Boolean isNegative;

@Column(name = "type")
private Integer type;

@Column(name = "N_DAYS")
private Integer numDays;
... (getters & setters)

}

最佳答案

根据你的代码,我可以告诉你的是,它与 @GenerateValue 无关,它指定 hibernate 负责为你的实体生成和标识符。在您的情况下,您自己生成 id,因此您必须手动设置该特定实体的 id。然后你就不会再收到这个错误了,你可以尝试的另一件事是使用 @PrePersist 注释一个方法,并尝试为其中的 id 分配一个值。我还没有尝试过这个,但这应该根据这个答案工作。

Assign Custom Identifier

如果您的 id 是由数据库生成的,那么您应该在 id 字段上使用 @GenerateValue(strategy=GenerationType.AUTO) 以及 @Id 注释。

关于java - Oracle 中没有序列的@GenelatedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23652289/

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