Pol*_*878 4 java hibernate hibernate-mapping
Hullo,所以...我有以下对象:
public class Person {
// some other getters/setters omitted.
void setAddress(Address addy) {
// omitted
}
Address getAddress() {
// omitted
}
}
public class Address {
Integer getId() {
// omitted
}
}
Run Code Online (Sandbox Code Playgroud)
而且,我有以下hibernate映射:
<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>
Run Code Online (Sandbox Code Playgroud)
因此,有一对一的映射,从Person到Address,Person有外键Address.
我要做的是Person从给定的AddressID中获取一个对象 ......但我似乎无法弄清楚正确的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;
}
Run Code Online (Sandbox Code Playgroud)
我知道我没有从外键列到Person上的属性的映射.每次我尝试添加一个我得到一个异常,说我使用相同的列两次?我不明白那会是什么问题:).
无论如何,获取给定地址的人最好的方法是什么?任何帮助,将不胜感激.
你应该能够做到这一点
Query query = this.session.createQuery("select p from Person as p where p.address=:address")
.setParameter("address",address);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9612 次 |
| 最近记录: |