Java Hibernate在列中插入自动编号
各位兄弟姐妹好, 我有一个类,它使用authuserid列、username列和authusertoken列保存userAuthInformatin 我想在每次插入时在authusertoken列中插入uuid号。我学习了Generated(GenerationTime.INSERT),但我不知道具体的方法Java Hibernate在列中插入自动编号,java,database,hibernate,jpa,hibernate-mapping,Java,Database,Hibernate,Jpa,Hibernate Mapping,各位兄弟姐妹好, 我有一个类,它使用authuserid列、username列和authusertoken列保存userAuthInformatin 我想在每次插入时在authusertoken列中插入uuid号。我学习了Generated(GenerationTime.INSERT),但我不知道具体的方法 package entities; import javax.persistence.Column; import javax.persistence.Entity; import jav
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;
}
}
您只需使用UUID Java类,并在对象创建时为该令牌字段分配一个值:
@Column(name = "authusertoken", columnDefinition = "BINARY(16)")
private UUID authusertoken = UUID.randomUUID();
如果当前关联行已具有值,则在获取实体时,Hibernate将使用反射设置该值,并使用该行的列值覆盖authusertoken
如果这是一个新对象,则在实例化该对象时,authusertoken将获得一个默认UUID。看起来,这是一个很好的解决方案。你能解释一下反射的部分并覆盖authusertoken吗?@user3137442,我猜@vladmilcea想说,如果一个对象在DB中已经有值
authusertoken
,那么在获取Hibernate时,当我使用这个解决方案时,它会将DB值覆盖为authusertoken
。它给我一个错误,说UUID不适用于参数int?也使用私有UUID authusertoken=UUID.randomUUID().toString();解决了存储字符串的问题。