Hibernate HQL для объединения неотображенных таблиц

У меня есть объект под названием "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....
}

Теперь я создаю 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 , который находится в правильном ] Категория ?

5
задан rghome 27 May 2019 в 12:41
поделиться