gpt4 book ai didi

java - Hibernate:如何根据作为关联映射一部分的外键列选择单个项目?

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:10 24 4
gpt4 key购买 nike

你好,所以...我有以下对象:

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 , PersonAddress 的外键.


我想做的是获取 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com