2011-07-19 2 views
1

Je veux faire un insert dans la table EmployeebyProject, quand essayer d'insérer jeter l'exception de l'objet transitoire.NHibernate transitoire objet exception

Tableau EmployeebyProject: {PK: EMPLOYEEID, PK: ProjectID, DateBegin, DateEnd}

Ceci est la mise en correspondance:

<composite-id> 
    <key-many-to-one name="Project" column="ProjectId" class="Project" cascade="save"></key-many-to-one> 
    <key-many-to-one name="Employee" column="EmployeeId" class="Employee"></key-many-to-one> 
</composite-id> 

<property name="DateBegin" type="DateTime"/> 
<property name="DateEnd" type="DateTime"/> 

enter code here

Comment peut éviter ce problème?

Répondre

1

L'objet de la perspective Hibernate peut être dans plusieurs états - transitoire, attaché, détaché ... Transitoire signifie que l'entité n'a pas encore été enregistrée dans la base de données. Si j'ai la relation A-> B, vous devez enregistrer B pour enregistrer A (car Hibernate doit savoir quoi mettre dans une clé étrangère à B).

donc 2 options:

  1. sauver B avant. Dans votre cas Projet, Employé
  2. mettre en cascade. Dans votre cas vous manquiez cascade sur l'employé
+1

Je sauve employé avant, cascade = "save", mais ne fonctionne pas ... – ale

Questions connexes