gpt4 book ai didi

Hibernate查询带有ID的外键字段

转载 作者:行者123 更新时间:2023-12-03 07:16:14 26 4
gpt4 key购买 nike

例如,我有两个实体:员工和地址。在这些实体中,Employee 有一个外键 AddressID 引用 Address 上的 ID 列。在 Java 域对象中,Hibernate 很好地用 Address 对象字段包装了 forgein 键整数字段。但是现在,我如何查询具有特定AddressID 的Employee?

我尝试创建表别名。这似乎可行,但相当尴尬。

我也尝试过做这样的事情:

criteria.add(restriction.eq("TheAddressObjectFieldName", 123);

它有时有效,但并非总是有效。我不确定这是正确的方法,但我希望它一直可以。

那么在 Hibernate 中查询外键列的正确方法是什么?

最佳答案

Hibernate 仅“很好地包装”您告诉它包装的内容。因此,假设您的 Employee 映射类似于:

@Entity
public class Employee {
...
@ManyToOne
@JoinColumn(name="address_id")
private Address address;
...
}

并且您的Address有一个id属性,您可以通过以下方式根据address_id进行查询:

session.createCriteria(Employee.class)
.add(Restrictions.eq("address.id", addressId));

为了根据 Address 属性进行查询,您必须create aliases or nested criteria :

session.createCriteria(Employee.class)
.createAlias("address", "a")
.add(Restrictions.eq("a.postalCode", postalCode));

关于Hibernate查询带有ID的外键字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1787086/

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