Hibernate在列中插入自动编号

时间:2014-08-07 08:05:34

标签: java database hibernate jpa hibernate-mapping

你好兄弟姐妹,

我有一个类,它将 userAuthInformatin authuserid 列,用户名列和 authusertoken 列保持在一起。

我想在每个插入的authusertoken列中插入uuid数字。我了解了Generated(GenerationTime.INSERT),但我不知道这样做的确切方法。

package entities;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;

@Entity
@Table(name = "authusers")
public class AuthUser {

    @Id
    @GeneratedValue
    private int authuserid;
    @Generated(GenerationTime.INSERT)
    @Column(name = "authusertoken")
    private long authusertoken;
    @Column(name = "username")
    private String username;

    public int getAuthuserid() {
        return authuserid;
    }

    public void setAuthuserid(int authuserid) {
        this.authuserid = authuserid;
    }

    public long getAuthusertoken() {
        return authusertoken;
    }

    public void setAuthusertoken(long authusertoken) {
        this.authusertoken = authusertoken;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

}

1 个答案:

答案 0 :(得分:1)

您可以简单地使用UUID Java类,并在创建对象时为此令牌字段赋值:

@Column(name = "authusertoken", columnDefinition = "BINARY(16)")
private UUID authusertoken = UUID.randomUUID();

如果当前关联的行已有值,则在获取实体时,Hibernate将使用Reflection设置它并使用行的列值覆盖authusertoken。

如果这是一个新对象,则在实例化对象时,authusertoken将获得默认的UUID。