Hibernate вставить автоматический номер в столбце
Здравствуйте, братья и сестры,
У меня есть класс, который хранит userAuthInformatin со столбцом authuserid, столбцомusername и столбцом authusertoken.
Я хочу вставить номер uuid в столбец authusertoken с каждой вставкой. Я узнал о 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 ответ
Решение
Вы можете просто использовать Java-класс UUID и присвоить значение этому полю токена во время создания объекта:
@Column(name = "authusertoken", columnDefinition = "BINARY(16)")
private UUID authusertoken = UUID.randomUUID();
Если текущая связанная строка уже имеет значение, при извлечении сущности Hibernate установит его с помощью Reflection и переопределит authusertoken значением столбца строки.
Если это новый объект, authusertoken получит UUID по умолчанию при создании экземпляра объекта.