У меня есть сущность под названием "Курс":
@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
, который находится в правильном Kategori
?