Null clé étrangère, en relation ManyToOne de l'utilisation d'hibernate [4.1.1] annotations
J'essaie de conserver un un-à-plusieurs, plusieurs-à-un rapport à l'aide de Hibernate 4.1.1 mais la clé étrangère est toujours NULL.
Il y a deux entités: Compte et Client. Un Client peut avoir de multiples Comptes tout un Compte a exactement un Client.
Voici les classes (uniquement ce qui est important):
Account.java
@Entity
@Table(name = "account")
public class Account implements Serializable {
private Client client;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public long getId() {
return id;
}
@ManyToOne
@JoinColumn(name = "id_client")
public Client getClient() {
return client;
}
}
Client.java
@Entity
@Table(name = "client")
public class Client implements Serializable {
private List<Account> accounts;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public long getId() {
return id;
}
@OneToMany(mappedBy = "client", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public List<Account> getAccounts() {
return accounts;
}
}
Test.java
session.beginTransaction();
Client client = new Client();
Account account1 = new Account();
Account account2 = new Account();
a.addAccount(account1);
a.addAccount(account2);
session.save(client);
session.getTransaction().commit();
Lors de l'exécution, Hibernate ajoute la clé étrangère de la table:
Hibernate: alter table account add index FKB9D38A2D3B988D48 (id_client), add constraint FKB9D38A2D3B988D48 foreign key (id_client) references client (id)
Les deux comptes ont id_client colonne NULL.
J'ai essayé de mettre nullable = false à l' @JoinColumn relation mais que venez d'invoquer une exception.
Exception in thread "main" org.hibernate.exception.ConstraintViolationException: Column 'id_client' cannot be null
Merci, mais ça ne fonctionne pas.
OriginalL'auteur Laurențiu Onac | 2012-03-24
Vous devez vous connecter pour publier un commentaire.
Pensé à elle. J'ai oublié d'ajouter le client pour les comptes.
Maintenant ça fonctionne. Merci pour les conseils. 😉
vous avez vraiment sauvé ma vie... j'allais bang ma tête sur le mur
Je pensais que cela soit fait automatiquement, c'fixer la Colonne 'id_client' ne peut pas être null
ouf!!! c'est un épargnant de vie!
OriginalL'auteur Laurențiu Onac
Je pense que problème est que vous avez besoin pour enregistrer le compte en premier et dans le dernier client sera sauvé.
OriginalL'auteur kandarp