日期:2014-05-19  浏览次数:20714 次

hibernate uuid id生成策略问题
大家有没遇到这样的问题啊,我用uuid的主键生成策略,修改数据的时候变成了新增,不知道怎么解决,哪位大神帮解决下。代码如下:
Java code

//JPA 基类的标识
@MappedSuperclass
public 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

@MappedSuperclass
public 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
------解决方案--------------------
探讨

引用:

看了下,原来你是用ORACLE数据库的序列自增的,你就用@SequenceGenerator

我不想用序列啊,我想用自动生成的id
新增和修改的方法都是save