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;
}
}