大家有没遇到这样的问题啊,我用uuid的主键生成策略,修改数据的时候变成了新增,不知道怎么解决,哪位大神帮解决下。代码如下:
- Java code
//JPA 基类的标识@MappedSuperclasspublic abstract class PkidEntity { /** * 主键及主键生成方式 */ @Id @GenericGenerator(name="hibernate-uuid",strategy="uuid") @GeneratedValue(generator="hibernate-uuid") @Column(name="pkid", nullable=false) protected String pkid; public String getPkid() { return pkid; } public void setPkid(String pkid) { this.pkid = pkid; } }
但是我用序列的生成方式则没有这样的问题
- Java code
@MappedSuperclasspublic abstract class IdEntity { protected Long id; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PKGen") @SequenceGenerator(name = "PKGen", sequenceName = "HIBERNATE_SEQUENCE", allocationSize = 1) public Long getId() { return id; } public void setId(Long id) { this.id = id; }}
------解决方案--------------------
我一般是这样写
- Java code
@Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") public String getId() { return this.id; } public void setId(String id) { this.id = id; }
------解决方案--------------------
看了下,原来你是用ORACLE数据库的序列自增的,你就用@SequenceGenerator
------解决方案--------------------