У меня проблема с работой в Hibernate и принудительное использование уникальных элементов данных при вставке.
Вот мои сокращенные объекты Entity:
Рабочий процесс:
@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)
, но с ней не повезло.
Любая помощь будет принята с благодарностью