【发布时间】:2019-03-18 19:48:07
【问题描述】:
我有一个复杂的(对我来说)休眠查询,我想弄清楚,但我的脑子就是不知道该怎么做。
我需要找到所有具有 EntityRegistration.userName =~ "foo" 的设备实体。
实体类:
@Entity()
@Table
public class Device {
@Basic()
@Column(name = "HostName")
private String hostName = null;
@Basic()
@Column(name = "RegistrationID")
private String registrationID = null;
}
@Entity()
@Table
public class EntityRegistration {
@Basic()
@Column(name = "ID")
private String iD = null;
@Basic()
@Column(name = "UserName")
private String userName = null;
}
Device.registrationID 映射到 EntityRegistration.iD。我不想将表更改为将 EntityRegistration 作为 OneToMany 引用。
这是我根据类似查询尝试过的,其中有一个 OneToMany 引用,而不是像这种情况下的 Basic 类型:
CriteriaBuilder builder = context.getBuilder();
Root<Device> root = context.getRoot();
Join<Device,EntityRegistration> joinReg = root.join("registrationID");
builder.lower(joinReg.get("id")), userName);
我理解为什么这段代码不起作用,但我不知道如何在我有 ID 引用的情况下正确编写查询。
【问题讨论】:
-
感谢您发现这一点,但恐怕我不明白如何将其应用于我的案例。
-
您考虑过原生查询还是不适合您?
-
本地查询不适合我
标签: java hibernate jpa criteria hibernate-criteria