je le code suivant dans UserController
dans ma session Scoped BeanJPA @OneToMany pas persistant/cascade
public void addItemToBundle(ItemEntity item){
//System.out.println(item.getTitle());
try {
em.getTransaction().begin();
UserEntity user = em.find(UserEntity.class, this.username);
BundleEntity bundle = new BundleEntity();
BundleEntityPK compositePk = new BundleEntityPK();
compositePk.setCheckedOutDate(new Date());
compositePk.setItemId(item.getItemId());
compositePk.setUsername(user.getUsername());
bundle.setId(compositePk);
Set<BundleEntity> bundles = new HashSet<BundleEntity>();
bundles.add(bundle);
user.setBundleEntities(bundles);
em.persist(user);
em.flush();
em.getTransaction().commit();
} finally {
}
}
public String addToBundle(){
try {
addItemToBundle(item);
} catch (NullPointerException e) {
e.getMessage();
}
return null;
}
Ce code utilise private ItemEntity item;
qui se transmet dans le balisage JSF suivant:
<p:commandLink action="#{itemController.item}">
<f:setPropertyActionListener target="#{itemController.selectedItem}" value="#{movie}" />
</p:commandLink>
(J'utilise PrimeFaces dans cet exemple) Le problème est que le addItemToBundle
n'appelle aucun code SQL dans la console (j'ai activé FINE) et le bundle n'est jamais créé ou ajouté à l'utilisateur. J'ai également essayé em.persist(user)
et em.flush()
et en définissant cascadeType dans mon UserEntity sans chance.
@OneToMany(mappedBy="userEntity",cascade=CascadeType.PERSIST)
private Set<BundleEntity> bundleEntities;
Merci!
Pour une raison quelconque, je pensais que 'getMessage()' a imprimé le message. Silly moi .. – knownasilya
Cela a aidé d'une certaine manière, maintenant je peux persister le Bundle mais pas toujours. Parfois, je dois appuyer sur le bouton une fois, d'autres fois c'est une fois, et d'autres fois rien ne se passe .. aussi, e.printStackTrace() est-il une bonne pratique? ou pas? – knownasilya