关于hibernates中默认ID生成的非唯一性问题

时间:2018-03-17 06:30:12

标签: java hibernate orm hibernate-mapping

以下代码投掷: nonuniqueobjectexception

但是当我使用时: @GeneratedValue(strategy = GenerationType.IDENTITY)每件事情都能正常运转。

@Entity
@Table(name="CART")
public class Cart {

    @Id
    @Column(name="cart_id")
    private long id;


@Entity
@Table(name="ITEMS")
public class Items {

    @Id
    @Column(name="id")
    private long id;

我想了解为什么它失败了,使用了hibernates的默认ID生成策略。

1 个答案:

答案 0 :(得分:0)

如果操作会破坏会话范围的标识,则会抛出非唯一性的异常异常。

如果用户尝试在同一个Session的范围内将同一Java类的两个不同实例与特定标识关联,则会发生这种情况。

这也可能意味着Hibernate无法生成唯一ID。

说过总是建议使用提供的GeneratedValue类型。

as

id = ggggg4g5h55hh6hhh7h7

更复杂

id = 2

此链接将帮助您更好地理解它。

https://www.thoughts-on-java.org/jpa-generate-primary-keys/