У меня проблема с Hibernate и принудительное использование уникальных элементов данных при вставке.Спящий режим: принудительное использование уникальных членов данных
Вот мои сокращенные объекты Entity:
Workflow:
@Entity
public class Workflow {
private long wfId;
private Set<Service> services;
/** Getter/Setter for wfId */
...
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "workflow_services",
joinColumns = @JoinColumn(name = "workflow_id"),
inverseJoinColumns = @JoinColumn(name = "service_id"))
public Set<Service> getServices() {
return services;
}
Услуги:
@Entity
public class Service {
private long serviceId;
private String serviceName;
/** Getter/Setter for serviceId */
...
@Column(unique=true,nullable=false)
public String getServiceName() {
return serviceName;
}
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "service_operations",
joinColumns = { @JoinColumn(name = "serviceId") },
inverseJoinColumns = { @JoinColumn(name = "operationId") })
public Set<Operation> getOperations() {
return operations;
}
Операция:
@Entity
public class Operation {
private long operationId;
private String operationName;
/** Getter/Setter for operationId */
@Column(unique=true,nullable=false)
public String getOperationName() {
return operationName;
}
Моя проблема:
Хотя я заявлял в каждом объекте, что СВОБОДНО, чтобы быть уникальным, он не применяется.
Внутри объекта Workflow я поддерживаю набор сервисов. Каждая Служба ведет список операций. Когда рабочий процесс сохраняется в базе данных, мне нужно, чтобы он проверял, находятся ли уже используемые службы и операции в базе данных, если это так, связать себя с этими строками.
В настоящее время я получаю повторы в таблицах служб и операций.
Я попытался с помощью аннотаций: @Table (uniqueConstraints)
но был нулевой удачи с ней.
Любая помощь будет принята с благодарностью
В какой базе данных и диалекте вы используете? Как вы создали таблицы в своей базе данных? hbm2ddl? Можете ли вы показать запросы, используемые для создания вашей таблицы? Я не думаю, что hibernate когда-либо проверяет уникальность, но он должен генерировать таблицы с соответствующими уникальными ограничениями в вашей базе данных. –