Мой POJO использует JPA, и когда я применяю уникальное значение в столбце, у меня не работает, я пытался использовать UniqueConstraint
, а также не работает для меня.
ниже мой код
@Entity
@Table(name = "users", uniqueConstraints={@UniqueConstraint(columnNames = {"user_id"}),@UniqueConstraint(columnNames = {"username"}),@UniqueConstraint(columnNames = {"email"})})
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="user_id",unique=true,nullable = false)
private int UserId;
@Column(name = "username" ,unique=true,nullable = false)
private String Username;
@Column(name = "email",unique=true ,nullable = false)
private String email;
@Column(name = "firstname",nullable = false)
private String firstname;
@Column(name = "lastname", nullable = false)
private String lastname;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "active")
private int active;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="user_role", joinColumns=@JoinColumn(name="user_id"), inverseJoinColumns=@JoinColumn(name="role_id"))
private Set<Role> roles;
ниже - сгенерированная таблица в базе данных (MySQL)
| users | CREATE TABLE users (
user_id int(11) NOT NULL,
username varchar(255) NOT NULL,
active int(11) DEFAULT NULL,
email varchar(255) NOT NULL,
firstname varchar(255) NOT NULL,
lastname varchar(255) NOT NULL,
password varchar(255) NOT NULL,
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
Журнал гибернации после запуска весны
Hibernate: create table users (user_id integer not null, username varchar(255) not null, active integer, email varchar(255) not null, firstname varchar(255) not null, lastname varchar(255) not null, password varchar(255) not null, primary key (user_id)) engine=InnoDB
Hibernate: alter table users drop index UKfnranlqhubvw04boopn028e6
Hibernate: alter table users add constraint UKfnranlqhubvw04boopn028e6 unique (username, email)
Hibernate: alter table users drop index UK_r43af9ap4edm43mmtq01oddj6
Hibernate: alter table users add constraint UK_r43af9ap4edm43mmtq01oddj6 unique (username)
Hibernate: alter table users drop index UK_6dotkott2kjsp8vw4d0m25fb7