你好, 所以...我有以下对象:
public class Person {
// some other getters/setters omitted.
void setAddress(Address addy) {
// omitted
}
Address getAddress() {
// omitted
}
}
public class Address {
Integer getId() {
// omitted
}
}
而且,我有以下 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>
因此,存在从 Person
的一对一映射至 Address
, Person
有 Address
的外键.
我想做的是获取 Person
来自给定 Address
的对象ID...但我似乎无法找出正确的 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 属性的映射。每次我尝试添加一个时,我都会收到一个异常,说我使用了同一列两次?我看不出这有什么问题 :)。
无论如何,获取给定地址的人的最佳方式是什么?任何帮助将不胜感激。
最佳答案
你应该可以做到这一点
Query query = this.session.createQuery("select p from Person as p where p.address=:address")
.setParameter("address",address);
关于java - Hibernate:如何根据作为关联映射一部分的外键列选择单个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320400/