-->
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.  [ 4 posts ] 
Author Message
 Post subject: Hibernate und JPA liefert null- Objekt, brauche Hilfe!
PostPosted: Tue May 05, 2009 3:29 am 
Newbie

Joined: Tue May 05, 2009 3:07 am
Posts: 4
Hallo!

Ich bin ein recht neuer Hibernate- User und freue mich, dass das Forum wieder online ist. Ich möchte mittels JAXB die von Hibernate "gefüllten" POJO's in XML schreiben. Ich verwende eine MySQL- Datenbank. Diese Datenbank (Name der DB ist "etl_export_dw") hat eine Tabelle "dw_exp_inventory". Nun habe ich 2 Klassen, welche JPA Annotationen verwenden. Beide Klassen greifen auf Spalten der gleichen Tabelle (dw_exp_inventory) zu.

Klasse "HeaderCartrige"

Code:
@Entity
@Table(name="dw_exp_inventory")
public class HeaderCartrige {
    @Id
    @GeneratedValue
    private long recId;
   
    @Embedded
    private ComplexTypeHeader header;
       
    public ComplexTypeHeader getHeader() {
        return header;
    }
   
    public void setHeader(ComplexTypeHeader header) {
        this.header = header;
    }
   
    public long getRecId() {
        return recId;
    }

    public void setRecId(long recId) {
        this.recId = recId;
    }
}


Klasse ComplexTypeHeader

Code:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "complexType.Header", propOrder = {
    "defaultInstock",
    "description"
})
@Embeddable
public class ComplexTypeHeader {
      
    @XmlElement(name = "default-instock")
    @Column(name="default_instock")
    protected boolean defaultInstock;
   
    @XmlElement
    @Column
    protected String description;
   
    @XmlAttribute(name = "list-id", required = true)
    @Column(name="list_id")
    protected String listId;
   
    @XmlAttribute
    @Column
    protected String mode;
   
    public boolean isDefaultInstock() {
        return defaultInstock;
    }

    public void setDefaultInstock(boolean value) {
        this.defaultInstock = value;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String value) {
        this.description = value;
    }

    public String getListId() {
        return listId;
    }

    public void setListId(String value) {
        this.listId = value;
    }

    public String getMode() {
        return mode;
    }

    public void setMode(String value) {
        this.mode = value;
    }
}


In meiner hibernate.cfg.xml habe ich das Mapping auf die Entity- Klasse vorgenommen:
Code:
<hibernate-configuration>
    ...
    <session-factory>
        <property name="connection.url">jdbc:mysql://localhost/etl_export_dw</property>
        ...
        <mapping class="com.abc.dse.schema.HeaderCartrige" />
    </session-factory>
</hibernate-configuration>


verwende ich die *.hbm.xml- Konfiguration anstatt Annotationen funktioniert es wie ich es mir vorstelle. Hier mein *.hbm.xml:
Code:
<hibernate-mapping package="com.abc.dse.pojo.etl.export.dw.inventory">
    <class name="HeaderCartrige" table="dw_exp_inventory" mutable="false">
        <id name="recId" column="rec_id" type="java.lang.Long">
      <generator class="increment" />
        </id>
        <component name="header">
            <property name="listId" column="list_id"/>
            <property name="mode" />
            <property name="defaultInstock" column="default_instock"/>
            <property name="description" />
        </component>
    </class>
</hibernate-mapping>


Ich versuche nun über Criteria Daten aus der Datenbank zu holen und zwar genau einen Datensatz:
Code:
HeaderCartrige headerCartrige = (HeaderCartrige) getSession().createCriteria(HeaderCartrige.class.getName()).setMaxResults(1).uniqueResult();


headerCartrige ist null und ich finde keine Lösung bzw. Anhaltspunkt woran es liegen kann. Ich denke ich habe an alles Gedacht. Vielleicht finde ich hier endlich die Lösung durch erfahrenere Hibernate- User...

Ich habe das Ganze mal auf einer Einfacheren Ebene durchgeführt, wieder mit 2 Klassen, wobei ich wieder @Embedded auf die 2. Klasse annotiert habe, die als Feldvariable in der 1. Klasse gehalten wird. Die Daten konnten ermittelt und mein XML geschrieben werden.

Danke und Grüße,
Danny


Top
 Profile  
 
 Post subject: Re: Hibernate und JPA liefert null- Objekt, brauche Hilfe!
PostPosted: Tue May 05, 2009 7:15 am 
Newbie

Joined: Tue May 05, 2009 3:07 am
Posts: 4
Hallo!

Ich habe das Problem gefunden. Ich habe die Hibernate- Entity- Annotation verwendet, anstatt die javax.persistence.Entity! jetzt funktioniert es bestens. Kann mir jemand sagen, warum es mit der hibernate- Entity nicht funktioniert und was die Vorraussetzungen sind, diese zu verwenden?

Danke!
Danny


Top
 Profile  
 
 Post subject: Re: Hibernate und JPA liefert null- Objekt, brauche Hilfe!
PostPosted: Thu May 07, 2009 7:41 am 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Die hibernate Annotation ist nur eine Ergänzung zur javax.persistence.Entity. Diese erlaubt dir zusätzliche Optionen zu setzen, die die JPA-Spezifikation (javax.persistence) nicht vorsieht.

_________________
-----------------
Need advanced help? http://www.viada.eu


Top
 Profile  
 
 Post subject: Re: Hibernate und JPA liefert null- Objekt, brauche Hilfe!
PostPosted: Thu May 07, 2009 8:29 am 
Newbie

Joined: Tue May 05, 2009 3:07 am
Posts: 4
Hallo mmerder!

Verstehe, das heißt, dass ich zusätzlich zu der JPA- Annotation die Hibernate- Annotation angeben um weitere Optionen zu setzen, wie mutable oä.

Vielen Dank für die Antwort!
Danny


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 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.