休眠:如何基于作为关联映射一部分的外键列选择单个项目?
|
你好
所以...我有以下对象:
public class Person {
// some other getters/setters omitted.
void setAddress(Address addy) {
// omitted
}
Address getAddress() {
// omitted
}
}
public class Address {
Integer getId() {
// omitted
}
}
而且,我有以下休眠映射:
<class name=\"Person\">
<id name=\"id\" column=\"personId\">
<generator class=\"native\"/>
</id>
<many-to-one name=\"address\"
column=\"addressId\"
unique=\"true\"
not-null=\"true\"/>
</class>
<class name=\"Address\">
<id name=\"id\" column=\"addressId\">
<generator class=\"native\"/>
</id>
</class>
因此,从Person
到Address
有一对一的映射,Person
具有到Address
的外键。
我想做的是从给定的Address
ID中获取Person
对象...但是我似乎无法弄清楚正确的HQL语法:
public Person getPersonFromAddress(Address address) {
Query query = this.session.createQuery(\"select p from Person as p where p.address_id = \" + address.getId());
@SuppressWarnings(\"unchecked\")
Person p = (Person)query.uniqueResult();
return p;
}
我知道我没有从外键列到Person上的属性的映射。每次尝试添加一个列时,都会出现一个异常,说我两次使用同一列?我看不出这有什么问题:)。
无论如何,获取给定地址的人的最佳方法是什么?任何帮助,将不胜感激。
没有找到相关结果
已邀请:
1 个回复
降女陷费券