-->
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: "Composite-ID" Abfrage nach Schlüsselfeld wirft Fehler
PostPosted: Tue Jun 30, 2009 9:46 am 
Newbie

Joined: Tue Jun 30, 2009 9:40 am
Posts: 4
Hallo Leute, ich habe folgendes Problem. Ich habe eine gemappte Klasse "User" in der ich nur lesenden Zugriff habe. Der Primärschlüssel wird über eine Composite-Id zusammengesetzt und in der Klasse UserPK gemappt. Nun habe ich das Problem, dass wenn ich eine Suche innerhalb der User-Klasse starte, den "username" (ein Teil des Primärschlüssels) nicht abfragen kann. D.h.
Code:
session.createCritera(User.class).add(Restrictions.eq(username, "harry"))
wirft eine Exception, da das Feld "username" in der Key-Klasse "UserPK" definiert wurde und folglich nicht in der Klasse "User" aufzufinden ist. Daher meine Frage: Gibt es mit unten stehendem Mapping überhaupt eine Chance, den "username" so abzufragen?
Anmerkung: An dem Mapping "sollte" nichts geändert werden.

Mapping-file:
Code:
<hibernate-mapping default-access="field">
<class name="default.User" table="USER" schema="ISP_SYSTEM"
    mutable="false">
   <composite-id name="primaryKey" class="default.UserPK">
      <key-property name="joiningdate" type="date">
         <column name="JOINED" not-null="true"/>
      </key-property>
      <key-property name="username" type="string">
         <column name="USERNAME" not-null="true"/>
      </key-property>
   </composite-id>
   <property name="firstname" type="string">
      <column name="FIRSTNAME"/>
   </property>
   <!-- other properties -->
</class>
</hibernate-mapping>


Mapped-class:
Code:
public class User{

   private String firstname;
   private UserPK primaryKey;
   
   public void setFirstname(String str){
      this.firstname = str;
   }
   
   public void getFirstname(){
      return this.firstname;
   }
   
   public UserPK getPrimaryKey(){
      return primaryKey;
   }
   
   public Date getJoiningdate(){
      return primaryKey.getJoiningdate();
   }
   
   public String getUsername(){
      return primaryKey.getUsername();
   }
   
}


Key-class:
Code:
public class UserPK {

   private String username;
   private Date joiningdate;
   
   public String getUsername(){
      return this.username;
   }
   
   public Date getJoiningDate(){
      return this.joiningdate;
   }
   
}


Top
 Profile  
 
 Post subject: Re: "Composite-ID" Abfrage nach Schlüsselfeld wirft Fehler
PostPosted: Wed Jul 01, 2009 10:08 am 
Newbie

Joined: Tue Jun 30, 2009 9:40 am
Posts: 4
Hat denn niemand eine Idee wie ich nach einem bestimmten Attribut des zusammengesetzten Schlüssels suchen kann?

Nochmals um es zu verdeutlichen:
In oben stehendem Beispiel kann es also mehrere User mit dem username "harry" geben, diese werden jedoch zusätzlich noch durch das Zugangsdatum (joiningdate) differenziert (diese bilden also zusammen den primary-key). Nun möchte ich eine Abfrage starten, die mir alle User mit dem "Teilschlüssel" username=harry ausgibt...

Niemand eine Idee?


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.