程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了休眠,id,oracle,序列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决休眠,id,Oracle,序列?

开发过程中遇到休眠,id,Oracle,序列的问题如何解决?下面主要结合日常开发的经验,给出你关于休眠,id,Oracle,序列的解决方法建议,希望对你解决休眠,id,Oracle,序列有所启发或帮助;

还有一个projet,其中有一个Oracle DB将数据提供给我的@Entity类。如您所说,序列通过触发器生成表PK的ID。这是我在这些类之一中使用的注释:

@ID
@GeneratedValue(strategy = GenerationType.auto, generator = "G1")
@SequenceGenerator(name = "G1", sequencename = "LOG_SEQ")
@column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
public int getID() {
    return this.ID;
}

这是您的帖子中显示的第二种语法。由于触发器是由数据库管理的,因此Java代码中没有对触发器的调用。我记得,如果我不想遇到问题,则必须在数据库中同时拥有序列和触发器。触发器询问要插入的行的ID是null还是=0在这种情况下,将调用LOG_SEQ序列。

因此,如果您为实体的@ID提供值,则可以将其插入数据库(如果该ID不存在),则不会调用该序列。尝试查看触发器的代码以确切了解其发生的情况。

解决方法

我的数据库是Oracle,我的id列值Oracle序列,此序列由触发器执行,因此,在插入每一行之前,此触发器使用此序列来获取id值。因此,我对应该在实体类中定义哪个id策略生成感到困惑。

@GenericGenerator(name = "generator",strategy = "increment")
@Id
@GeneratedValue(generator = "generator")

要么

@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator = "idGenerator")
@SequenceGenerator(name="idGenerator",sequencename="ID_SEQ")

要么

@Id
@GeneratedValue(strategy = GenerationType.AUTO)

真的很困惑,有人可以阐明这个话题吗?请清楚解释。

大佬总结

以上是大佬教程为你收集整理的休眠,id,oracle,序列全部内容,希望文章能够帮你解决休眠,id,oracle,序列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。