Bonjour à tous,
J'ai un soucis lorsque je veux enregistrer mes données en base car celles-ci ne sont pas enregistrées.
Voici des exemples de ce que je fais dans mon code:
Extrait du service:
Le modèle est constitué avec d'autres modèles et il y a des jointures (il y a des getteurs et setteurs associés):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 /** * {@inheritDoc} */ @Override @Transactional public MonObjetVO create(MonObjetVO monObjetVO) throws Exception { Objet model = MonObjetClonerFactory.getInstance().getDefaultClonerToModel().copy(monObjetVO); // utilise getEntityManager().persist(t); monObjetDao.persist(model); return MonObjetClonerFactory.getInstance().getDefaultClonerToVo().copy(model); } /** * {@inheritDoc} */ @Override @Transactional public MonObjetVO update(MonObjetVO monObjetVO) throws Exception { MonObjet model = MonObjetClonerFactory.getInstance().getDefaultClonerToModel().copy(monObjetVO); // utilise getEntityManager().merge(t); model = monObjetDao.update(model); return MonObjetClonerFactory.getInstance().getDefaultClonerToVo().copy(model); }
J'ai bien utilisé l'annotation @Transactional et j'appelle les persist() et update() de mon entityManager. Cela ne sauvegarde rien en base et je n'ai aucune exception. Pourtant, en sortie du update, lorsque je récupère l'objet modèle en retour il semble normal... mais rien en base. J'ai des traitement similaires mais avec des modèles plus simples (sans jointures et donc sans utilisation d'autres modèles) et cela marche bien ce qui me fait penser que l'entityManager est bien configuré mais j'ai peut être oublié un truc qui ferait que les objets complexes et avec des jointures ne sont pas correctement insérés ou mis à jour en base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @OneToMany(mappedBy = "column1") private List<MonModele1> modeles1; @ManyToMany @JoinTable(name = "MAP_MODELE_MODELE2", joinColumns = { @JoinColumn(name = "column2") }, inverseJoinColumns = { @JoinColumn(name = "column3", nullable = false) }) private List<MonModele3> modeles3;
Pouvez-vous m'aider svp? Comment pourrais-je savoir ce qu'il se passe et pourquoi cela ne fait rien en base?
Edit: Je viens de remarquer en activant l'affichage des requêtes sql qu'il n'y a pas de requête update dans le cas qui ne marche pas alors qu'il y en a une dans le cas qui marche. Je ne comprend pas car le code est similaire pour les deux. Une idée?
Partager