tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von blindmind
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
559
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Orthak Orthak ist offline Mitglied Bronze
    Registriert seit
    Dec 2008
    Beiträge
    36
    Hallo zusammen,
    ich arbeite gerade an einer simplen Google Appengine - Anwendung, die JPA 1 für die Persistenz nutzt. Leider bekomme ich in meinen UnitTests immer nur Leerergebnisse. Anbei ein paar Codeausschnitte:

    Klasse User:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    @Entity
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    public class User implements IUser {
     
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        
        // Logindata
        private String login, password;
        private String eMail;
    ...

    Klasse UserDAO:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    public class UserDAO implements IUserDAO {
     
        private EntityManager em;
        
        public UserDAO() {
            this.em = EMF.get().createEntityManager();
        }
        
        public void save(IUser user) {
            em.persist(user);
        }
     
        public IUser getById(long id) {
            //Query result = em.createQuery("SELECT u FROM User u WHERE u.id = :id ").
            //  setParameter("id", id);
            
            return (IUser)em.find(IUser.class, id);
        }
    ...

    Und hier die Testmethode:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        @Test
        public void testSave() {
            IUser user = new User();
            user.setLogin("testUserDAO");
            userDAO.save(user);
            if(userDAO.getById(1l).getLogin().equals("testUserDAO"))
                assert(true);
            else
                assert(false);
        }

    Der Test schlägt entsprechend mit einer NullPointerException fehl. Hat Jemand eine Idee was ich hier falsch mache?

    P.S.: Die für lokale UnitTests notwendigen Jars sind eingebunden.
     

  2. #2
    blindmind blindmind ist offline Mitglied
    Registriert seit
    Apr 2006
    Beiträge
    17
    Hi!

    Ich bin selbst "Enterprise-Anfänger", aber ich würde folgendes versuchen.

    Erzeuge das userDAO in Deiner Test-Methode, da der EntityManager dort ja im Konstruktor erzeugt wird.

    Der EntityManager, bzw. dessen Lebenzyklus ist, sofern es keine Statefull Session-Bean ist, an die aktuelle Transaktion gebunden. Und sofern ich weiß, werden mit @Test annotierte Methoden innerhalb einer Transaktion durchgeführt, d.h. der aktive EntityManager wird nach der Beendigung dieser geschlossen. Aus diesem Grunde werden die JPA-Entitäten, die mit dem EM assoziert waren, in den Zustand detached übergehen, können in der Anwendung zwar weiter benutzt werden, aber die Interakrion mit dem EE ist nicht mehr möglich.

    Ich hoffe ich erzähle hier keinen kompletten Unfug, aber ich denke das es so ist....
    Orthak bedankt sich. 

  3. #3
    Orthak Orthak ist offline Mitglied Bronze
    Registriert seit
    Dec 2008
    Beiträge
    36
    Hallo blindmind,
    ohne Transaktion geht es natürlich nicht. Danke fürs Hinweisen . Für Interessierte hier das (funktionierende) DAO:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    public class UserDAO implements IUserDAO {
     
        private EntityManager em;
        private EntityTransaction tx;
        
        public UserDAO() {
            this.em = EMF.get().createEntityManager();
            this.tx = em.getTransaction();
        }
        
        public void save(IUser user) {      
            tx.begin();
                em.persist(user);
            tx.commit();
        }
    }
     

Ähnliche Themen

  1. Unterschiedliche Ergebnisse im IE und FF
    Von mtk-flo im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 15.04.09, 12:33
  2. Ergebnisse ordnen
    Von adlershof im Forum PHP
    Antworten: 9
    Letzter Beitrag: 16.10.07, 16:57
  3. Ergebnisse aus der DB verlinken
    Von hutz im Forum PHP
    Antworten: 1
    Letzter Beitrag: 21.08.04, 22:10
  4. Ergebnisse runden?
    Von MotoxX im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 27.01.04, 14:26
  5. SQL-Ergebnisse auswerten. Wie?
    Von RoterRitter im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 07.01.04, 23:18

Stichworte