gpt4 book ai didi

用于连接非映射表的 Hibernate HQL

转载 作者:行者123 更新时间:2023-12-03 13:16:09 25 4
gpt4 key购买 nike

我有一个名为“Kurs”的实体:

@Entity
public class Kurs {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long kursId;
private String name;
//Accessors....
}

还有一个名为“Kategori”的实体:
@Entity
public class Kategori {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long kategoriId;
private String name;

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable (name = "KursKategori", joinColumns = {@JoinColumn(name = "kategoriId")}, inverseJoinColumns = {@JoinColumn(name = "kursId")})
private List<Kurs> kursList;
// Accessors....
}

现在我正在 build 一个 KursDao这将有一个方法来获取 Kurs 的列表由 kategoriId ,但我无法让加入为我工作。
习惯了 SQL,我通常认为查询应该是这样的:
getHibernateTemplate().find("from Kurs as k INNER JOIN KursKategori kk ON k.kursId = kk.kursId AND kk.kategoriId = ?", kategoriId);

但这不起作用,我无法让这样的事情发挥作用。我不想创建 KursKategori 的类因为无论如何它只是一个映射表。
有没有办法加入非映射表 KursKategori到映射表 kurs这样我只会得到 Kurs这是正确的 Kategori ?

最佳答案

在 HQL 中,您只能加入实体之间的映射关系。但是,你有这样一个关系,所以你可以使用它:

select kurs from Kategori kat join kat.kursList kurs where kat.kategoriId = ?

关于用于连接非映射表的 Hibernate HQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9068829/

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