Hi
Ich erarbeite in rahmen einer j2ee übung eine Application die Daten in eine beliebige Datenbank schreiben und auslesen kann.
Mein Problem ist momentan das abfragen von daten aus meiner (SQL) Datenbank.
Ich führe ein JUnittest aus und schreibe Daten in verschieden DB-Tabellen alle mit Primärschlüssel verknüpft.
Der Customer ist inizialiesiert und über diesen müsste ich nicht nur die adresse abfragen können sondern auch seine reservierung (und reservierungs details).
Leider bekomme ich folgende fehlermeldung:
Meine Test Methode sieht wie volgt aus.
Ich kann alle daten aus den Tabellen Person und address auslesen.
Aber die daten aus Reservation und(oder) Cabin nicht! ???:L
Beide (Reservation und Cabins) sind vom Typ List aber daran sollte es nicht liegen.
Hab ich was bei der initaliesierung falsch gemacht?
Das meiste nimmt mir ja j2ee (JBoss v4.2) über die persistensxml und die mysql-ds ab.
Und über den Customer denn ich ja abrufen kann sind reservation und cabin (Many to one) verbunden.
Der Fehler soll laut JUnittest in der Roten zeile liegen.
die methode aus customer sieht so aus
Ich erarbeite in rahmen einer j2ee übung eine Application die Daten in eine beliebige Datenbank schreiben und auslesen kann.
Mein Problem ist momentan das abfragen von daten aus meiner (SQL) Datenbank.
Ich führe ein JUnittest aus und schreibe Daten in verschieden DB-Tabellen alle mit Primärschlüssel verknüpft.
Der Customer ist inizialiesiert und über diesen müsste ich nicht nur die adresse abfragen können sondern auch seine reservierung (und reservierungs details).
Leider bekomme ich folgende fehlermeldung:
Code:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: sm4_Titan.ejbModule.com.titan.server.ejb.Customer.reservations, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
at org.hibernate.collection.PersistentBag.get(PersistentBag.java:422)
at sm4_Titan.ejbModule.com.titan.test.JUnitCustommerwithOneToMany.testGetCustomer(JUnitCustommerwithOneToMany.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Meine Test Methode sieht wie volgt aus.
Code:
@Test
public final void testGetCustomer() {
Customer customer = reservationManagerRemote.getCustomer(new Long(1));
assertNotNull(customer);
System.out.println(customer.getFirstName());
List<Reservation> reservation = customer.getReservations();
Address address = customer.getAddress();
assertNotNull(reservation);
System.out.println(address.getAddress());
[COLOR="Red"]System.out.println(customer.getReservations()[/COLOR][COLOR="Blue"].get(0).getCabins().get(0).getCabinName());
[/COLOR] }
Ich kann alle daten aus den Tabellen Person und address auslesen.
Aber die daten aus Reservation und(oder) Cabin nicht! ???:L
Beide (Reservation und Cabins) sind vom Typ List aber daran sollte es nicht liegen.
Hab ich was bei der initaliesierung falsch gemacht?
Das meiste nimmt mir ja j2ee (JBoss v4.2) über die persistensxml und die mysql-ds ab.
Und über den Customer denn ich ja abrufen kann sind reservation und cabin (Many to one) verbunden.
Der Fehler soll laut JUnittest in der Roten zeile liegen.
die methode aus customer sieht so aus
Code:
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "customerId")
public List<Reservation> getReservations() {
return reservations;
}
public void setReservations(List<Reservation> reservations) {
this.reservations = reservations;
}