-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Hibernate läd ein Objekt nicht richtig
PostPosted: Thu Sep 18, 2008 6:03 pm 
Newbie

Joined: Wed Sep 17, 2008 5:26 pm
Posts: 17
Zu allererst: Ich fange gerade erst mit Hibernate an. Ich bin ein Buch am durcharbeiten, und versuche die Bsp nachzuvollziehen. Ich habe folgende Objekte:
User
Code:
package HibernateGWT.client;

import com.google.gwt.user.client.rpc.IsSerializable;

public class User implements IsSerializable {

   public long id;
   public String username;
   public String password;
   
   public User() {}
   
   public User( String username, String password ) {
      this.username = username;
      this.password = password;
   }
...getter/setter kommen hier


und ein Objekt Advert
Code:
package HibernateGWT.client;

import com.google.gwt.user.client.rpc.IsSerializable;

public class Advert implements IsSerializable {

   public long id;
   public String title;
   public String message;
   public User user;
   
   public Advert( String title, String message, User user ) {
      this.title = title;
      this.message = message;
      this.user = user;
   }
   
   public Advert() {}
...getter/setter


Meine Hibernate mapping Dateien sehen so aus:
Code:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
   <class name="HibernateGWT.client.User" table="users">
      <id name="id" type="long" column="id">
         <generator class="increment"/>
      </id>
      <property name="username" column="name" type="java.lang.String"/>
      <property name="password" column="password" type="java.lang.String"/>
   </class>
</hibernate-mapping>


bzw.
Code:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
   <class name="HibernateGWT.client.Advert" table="adverts">
      <id name="id" column="id" type="long">
         <generator class="increment"/>
      </id>
      <property name="title" type="java.lang.String" column="title"/>
      <property name="message" type="java.lang.String" column="message"/>
      <many-to-one name="user" column="user_id" class="HibernateGWT.client.User" not-null="true"/>
   </class>
</hibernate-mapping>


Ich habe eine Methode die folgendes macht
Code:
public Advert[] getAdvert( User user ) {
      Session session = getSessionFactory().openSession();
      Query q = session.createQuery("from Advert where user = :userId");
      q.setLong( "userId", user.id );
      List<Advert> adverts = (List<Advert>) q.list();
      session.close();
      return adverts.toArray( new Advert[adverts.size()] );
   }


Lasse ich diese Methode durch den Debugger laufen, dann läd Hibernate interessanterweise nicht ein User Objekt sondern in der Debuggeranzeige,wird als Wert für ein Userobjekt in einem Advert-Objekt folgendes angezeigt: org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer@2d16a5

Statt eines User-Objekts zeigt mir der Debugger als Wert für ein User-Objekt in einem Advert-Objekt "User_$$_javassist_1" an.

Wieso wird kein User-Objekt geladen? Es ist nämlich für meine Anwendung wichtig, dass das User-Objekt richtig dargestellt wird.


Top
 Profile  
 
 Post subject:
PostPosted: Fri Sep 19, 2008 7:39 am 
Expert
Expert

Joined: Thu Jul 05, 2007 9:38 am
Posts: 287
Was du siehst sind Proxies, die Hibernate benötigt, um Lazyloading und dergleichen zu implementieren.

Hier ist das ganz gut erläutert: http://blog.xebia.com/2008/03/08/advanc ... -pitfalls/

_________________
Please rate useful posts.


Schauderhaft: Softwaredevelopment, Projectmanagement, Qualitymanagement and all things "schauderhaft"


Top
 Profile  
 
 Post subject:
PostPosted: Sun Sep 21, 2008 10:14 am 
Newbie

Joined: Sun Sep 21, 2008 9:49 am
Posts: 5
hi!

ich weiß zwar nicht genau, was du erreichen willst, aber warum nimmst du nicht bei deinem User ein Set mit adverts auf?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.