Ich habe gerade ein Problem wo ich nicht weiter komme...
Ich habe eine Stateless Session Bean namens "BenutzeverwaltungrBean":
Vom Client aus mache ich folgendes:
Beim Speichern des Benutzers in der Zeile mit em.persist() bekomme ich dann die PersistentObjectException:
Mache ich das falsch?
Ich habe eine Stateless Session Bean namens "BenutzeverwaltungrBean":
Java:
@Stateless( name = "BenutzerverwaltungBean" )
public class Benutzerverwaltung implements BenutzerverwaltungLocal, BenutzerverwaltungRemote {
@Override
public Benutzer findBenutzerByName( String name ) throws NotFoundException {
Query query = em.createQuery( "SELECT b FROM Benutzer b WHERE b.name = :name" );
query.setParameter( "name", name );
List<Benutzer> result = query.getResultList();
if ( result.size() == 0 ) {
throw new NotFoundException();
}
return result.get( 0 );
}
@Override
public Benutzer saveBenutzer( Benutzer benutzer ) {
try {
em.merge( benutzer );
em.persist( benutzer );
} catch (Exception e) {
e.printStackTrace();
}
return benutzer;
}
}
Vom Client aus mache ich folgendes:
Java:
BenutzerverwaltungRemote bv = ...; //Lookup
Benutzer b = bv.findBenutzerByName( "username" );
System.err.println( b.getId() ); //Hier kommt auch die richtige ID raus
b.setVorname( "EinVorname" );
bv.saveBenutzer( b ); //Speichern
Beim Speichern des Benutzers in der Zeile mit em.persist() bekomme ich dann die PersistentObjectException:
Code:
19:57:04,190 ERROR [STDERR] javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: de.test.dpmam.common.businessobjects.Benutzer
19:57:04,195 ERROR [STDERR] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1160)
19:57:04,197 ERROR [STDERR] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1094)
19:57:04,199 ERROR [STDERR] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1103)
19:57:04,201 ERROR [STDERR] at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:603)
19:57:04,203 ERROR [STDERR] at org.jboss.jpa.impl.tx.TransactionScopedEntityManager.persist(TransactionScopedEntityManager.java:206)
19:57:04,204 ERROR [STDERR] at de.test.dpmam.server.beans.Benutzerverwaltung.saveBenutzer(Benutzerverwaltung.java:193)
Mache ich das falsch?