gpt4 book ai didi

oracle - 使用 oracle 和 hibernate 的 GeneratedValue 不起作用

转载 作者:行者123 更新时间:2023-12-02 22:22:45 48 4
gpt4 key购买 nike

我在使用 Oracle XE 数据库的项目中遇到了 GeneratedValue 注释的问题。根本不会生成该值 - 在尝试使用自动生成的字段在表中插入行时,我不断收到错误消息。

"Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("SYSTEM"."T_VAPP"."VAPPID")"

完全相同的代码适用于 Derby 或 MySQL,但我需要使其适用于 Oracle,它似乎忽略了我在生成的字段定义中输入的任何内容。我尝试使用 GenerationType.TABLE、GenerationType.SEQUENCE,但同样的错误仍然存​​在。我还使用 Oracle SQL 开发人员验证了没有创建代码中定义的序列。我在这里想念什么?

@Entity
@Table(name = "T_vApp")
@RooJavaBean
@RooToString
@RooJpaActiveRecord(identifierColumn = "vAppId", identifierField = "id", table = "T_vApp")
public class VLabApplication {



@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
@Column(name = "vAppId" )
private Long id;

最佳答案

GenerationType.AUTO 是正确的 --- 这将确保您的代码适用于 oracle 和 mysql(无需更改您的代码)。我这样使用它,从来没有遇到任何问题。

尝试移除 @Roo 魔法,生成 setter/getter 并查看是否有帮助。顺便说一句,我通常会注释 setter/getter 。我不认为这是问题所在,但如果其他一切都失败了,您可以随时尝试。

我的猜测是 roo 和 hibernate 之间的一些问题(我从未使用过也没有读过关于 roo 的信息,所以这真的是一个猜测)。

关于oracle - 使用 oracle 和 hibernate 的 GeneratedValue 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13431785/

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