J'ai un problème avec Hibernate et l'application de membres de données uniques lors de l'insertion.Hibernate: appliquer des membres de données uniques
Voici mes objets abrégés Entité:
Flux de travail:
@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;
}
Service:
@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;
}
Opération:
@Entity
public class Operation {
private long operationId;
private String operationName;
/** Getter/Setter for operationId */
@Column(unique=true,nullable=false)
public String getOperationName() {
return operationName;
}
Mon numéro:
Bien que j'aie indiqué dans chaque objet ce qui est SUPPOSÉ pour être unique, il n'est pas appliqué.
Dans mon objet Workflow, je gère un ensemble de services. Chaque service maintient une liste des opérations. Quand un flux de travail est enregistré dans la base de données, j'en ai besoin pour vérifier si les services et les opérations qu'il utilise sont déjà dans la base de données, si oui, s'associez-vous à ces lignes.
Actuellement, je reçois des reprises dans mes tables Services et Opérations.
J'ai essayé d'utiliser l'annotation: @Table (uniqueConstraints)
mais ont eu zéro chance avec elle.
Toute aide serait grandement appréciée
Quelle base de données et quel dialecte utilisez-vous? Comment avez-vous créé les tables dans votre base de données? hbm2ddl? Pouvez-vous montrer les requêtes utilisées pour générer votre table? Je ne pense pas que Hibernate vérifie jamais l'unicité elle-même, mais elle devrait générer des tables avec les contraintes uniques appropriées dans votre base de données. –