2010-08-14 5 views
1

Je reçois "Pendant la synchronisation, un nouvel objet a été trouvé via une relation qui n'était pas marquée cascade PERSIST" lors de la tentative de persistance d'un objet Word() ayant un mappage de champs Many-To-Many vers une table Les sujets. La table de pont de relations est Topic_links. Ce qui complique le problème, c'est que j'utilise toujours Eclipse Workbench pour configurer mes entités, ce qui rend difficile la recherche de solutions car la plupart des personnes suggèrent des réponses à l'aide d'annotations que le Workbench n'utilise pas. Je n'ai pas trouvé un moyen dans le plan de travail pour définir l'option CASCADE pour la relation à PERSIST. J'ai ajouté l'entrée suivante au fichier persistence.xml:EclipseLink cascade persistent exception

<property name="eclipselink.persistence-context.persist-on-commit" value="true"/> 

L'exception est toujours levée.

Répondre

1

Je ne suis pas totalement sûr de la syntaxe car il semble que l'Eclipse Workbench utilise un fichier XML natif EclipseLink ORM, mais avec des mappings XML standard JPA, vous pouvez en cascade de configuration en ajoutant un élément <cascade> à l'intérieur du <many-to-many>, quelque chose comme ceci:

<many-to-many name="projects" target-entity="Project"> 
    <join-table name="PROJ_EMP"> 
     <join-column name="EMP_ID" /> 
     <inverse-join-column name="PROJ_ID" /> 
    </join-table> 
    <cascade> 
     <cascade-persist/> 
    </cascade> 
</many-to-many> 

Mais vous devriez vraiment changer vos habitudes, Eclipse Workbench n'est pas idéal pour le développement de JPA. James Sutherland citant dans ce fil Workbench to use annotations:

Le EclipseLink Workbench est l'interface utilisateur pour le natif (ancien) EclipseLink ORM fichier XML, OXM et EIE, est pour le développement JPA, il ne vise pas . Eclipse Dali, Oracle JDeveloper ou d'autres outils JPA devraient être utilisés pour cela.

Questions connexes