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 по умолчанию при создании экземпляра объекта.

Другие вопросы по тегам