Bonjour à toutes et tous,

Je dois associer un utilisateur à des rôles au travers d'un objet qui vas contenir cette relation.

Mes tables (PostgreSQL) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE user (
  uid SERIAL NOT NULL
);
CREATE TABLE role (
  rid SERIAL NOT NULL
);
CREATE TABLE user_role (
  uid INTEGER NOT NULL,
  rid INTEGER NOT NULL,
  -- FOREIGN KEYS ...
);
Mon objet "Affectation" qui me sert à associer un utilisateur à un ou plusieurs rôles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public class Affectation {
  private User user;
  private List<Role> roles;
 
  // get et set..
}
Et le mapping suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<class name="xx.Affectation" table="user_role">
  <id column="uid" name="id">
    <generator class="foreign">
      <param name="property">user</param>
    </generator>
  </id>
 
  <one-to-one name="user" constrained="true" />	
 
  <bag name="roles" table="user_role" lazy="false">
    <key column="uid"/>   			
    <many-to-many class="xx.Role" column="rid" unique="false"/>
  </bag>
</class>
Mais les insertions ne fonctionnent pas car la requête générée n'insère que l'id de l'utilisateur et qu'il y à une contrainte "NOT NULL" sur la colonne "user_role"."rid" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
insert into user_role (uid) values ('2')
J'ai essaué de rajouter "casacade=all" ou "casacade=save-update" ainsi que "inverse=true" mais rien ne change.

Pouvez-vous m'aider ? Merci