#java #hibernate #entity
#java #спящий режим #сущность
Вопрос:
У меня есть следующий код:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@NotNull
@Column(name = "LOGIN", unique = true)
private String login;
@Column(name = "PASSWORD")
private String password;
@Column(name = "ROLE")
private UserRole role;
@Column(name = "E_MAIL", unique = true)
private String email;
@Convert(converter = UserStrategyConverter.class)
@Column(name = "STRATEGY")
private UserStrategy userStrategy;
@Column(name = "SUBSCRIPTION")
private Boolean subscription;
@Column(name = "MONEY")
private BigDecimal money;
Моя проблема: когда я помещаю этот объект из postman в json:
{
"firstName": "Daniel",
"lastName": "xxx",
"password": "daniel",
"role": "ROLE_USER",
"email": "test@test.pl",
"subscription": false,
"money": "1200"
}
Это создает объект в сущности. Проблема в том, что я могу умножать этот объект снова и снова вместо unique = true
в столбцах ( email
и login
). Кто-нибудь может объяснить мне, почему?
Комментарии:
1. Работает ли следующее?
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = "login"), @UniqueConstraint(columnNames = "email") })
, не уверен, чтоcolumnNames
должны быть имена из java-объекта или из таблицы, вам нужно попробовать это2. У меня это тоже не работает :/
Ответ №1:
Режим гибернации будет учитывать ограничение unique = true
только во время генерации схемы.
Во время генерации схемы будет добавлено следующее ограничение:
alter table User
add constraint UK_u31e1frmjp9mxf8k8tmp990i unique (email)
Если вы не используете генерацию схемы, нет смысла использовать unique = true
.