-->
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.  [ 2 posts ] 
Author Message
 Post subject: [Solved] 1:1 Relation mit Annotations
PostPosted: Thu Jul 24, 2008 4:16 am 
Beginner
Beginner

Joined: Thu Jul 24, 2008 3:33 am
Posts: 20
Hallo!

Eigentlich handelt es sich nicht um ein 1:1 Mapping, sondern um ein 1:0,1 Mapping. Es sind zwei Tabellen mit demselben primary key, wobei die zweite Tabelle eine optionale zusätzliche Beschreibung beinhaltet.

Hibernate version:
hibernate: 3.2.5.ga
hibernate-commons-annotations: 3.3.0.ga
hibernate-annotations: 3.3.0.ga

Classes:
Erst die Haupttabelle, die immer da ist (ohne Getter/Setter und unwichtige Attribute):
Code:
@Entity
@Table(name="VORGANG")
public class Vorgang
{
   /**
    * ZMR-Transaktions-ID
    */
   @Id
   @Column(name="ZMR_TXID")
   private String transactionId;

   /**
    * Zugehörige Statistik
    */
   @OneToOne
   @PrimaryKeyJoinColumn
   private VorgangsStatistik vorgangsStatistik;

   ...


Danach die optionale Beschreibungs-Tabelle:
Code:
@Entity
@Table(name="VORGANGSSTATISTIK")
public class VorgangsStatistik
{
   /**
    * ZMR-Transaktions-ID
    */
   @Id
   @Column(name="ZMR_TXID")
   String transactionId;

   /**
    * Zugehöriger Vorgang
    */
   @OneToOne
   @PrimaryKeyJoinColumn
   private Vorgang vorgang;
   ...


Name and version of the database you are using:
PostgreSQL 8.2

The generated SQL (show_sql=true):
Wenn ich nun
Code:
       Vorgang vorgang = vorgangDao.find(transactionId);

aufrufe, wird folgendes Statement abgesetzt:

Code:
    select
        vorgang0_.ZMR_TXID as ZMR1_3_2_,
        vorgang2_.ZMR_TXID as ZMR1_3_1_
    from
        public.VORGANG vorgang0_
    left outer join
        public.VORGANGSSTATISTIK vorgangsst1_
            on vorgang0_.ZMR_TXID=vorgangsst1_.ZMR_TXID
    left outer join
        public.VORGANG vorgang2_
            on vorgangsst1_.ZMR_TXID=vorgang2_.ZMR_TXID
    where
        vorgang0_.ZMR_TXID=?


Wieder mit entfernten Datencolumns. Was mich stört, sind die zwei left outer joins. Den zweiten möchte ich auf jeden Fall entfernen, da er bei einer 1:1-Beziehung nicht wieder retour gehen muss, optional würde ich auch gerne den ersten entfernen, da ich den Vorgang suchen und finden möchte, die Statistik aber erst später in einem eigenen Lauf.

Hoffe, das Szenario ist verständlich formuliert.

Könnt Ihr mir da helfen, wär super, hab im Internet nichts gefunden, und sitz jetzt schon ziemlich lange daran.
vielen Dank Christian


Last edited by ChrLipp on Mon Jun 29, 2009 10:45 am, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: 1:1 Relation mit Annotations
PostPosted: Mon Jun 29, 2009 10:45 am 
Beginner
Beginner

Joined: Thu Jul 24, 2008 3:33 am
Posts: 20
Siehe diesen Post.


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