如何使用主键自动增量存储数据库中的值列表

时间:2013-05-27 08:19:06

标签: java mysql hibernate

如何使用主键自动增量存储数据库中的值列表 我的道具有这个主键

@Id
@GeneratedValue(generator = "increment")
@Column(name = "ParamKey")
public long getParamKey() {
    return paramKey;
}

public void setParamKey(long paramKey) {
    this.paramKey = paramKey;
}

它插入一行并显示异常

java.lang.RuntimeException: a different object with the same identifier value was already associated with the session: 

4 个答案:

答案 0 :(得分:0)

将您的代码更改为:

//Declaration
@Id
@GenericGenerator(strategy = "increment")
@Column(name = "ParamKey")
private int paramKey;

//Getter
public long getParamKey(){
    return paramKey;
}

答案 1 :(得分:0)

尝试在类中设置主键,代表您的表

@Id
@GeneratedValue
private long id;

答案 2 :(得分:0)

检查表格中的id列是否autoincrement选项为true。 (例如,在MySQL GUI中)然后使用前面描述的生成类型AUTO

答案 3 :(得分:0)

这可能是问题所在: -

实际上,当您部署应用程序时,请暂停存储最大ID 并连续将其增加1 。但是,如果您直接在数据库中插入值,那么它会导致问题因为你的hibernate没有意识到这件事。

因此,在下次插入时,它会将sequence_id + 1分配给下一行,但它已经存在于数据库中 所以它会给你主键约束错误。