Задача: Я хочу создать запрос, который выбирает Темы , которые соответствуют ключевым словам ID´s "Java" и "sql", тема с ID = 1 соответствует обоим ключевым словам "Java" и "Sql .
Я реализовал две простые сущности Тема и ключевое слово . Они имеют двунаправленное отношение ManyToMany:
@Entity
@Table(name = "Topic")
public class Topic implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "topicID")
private Long id;
@Column(name = "topicTitle")
private String title = "";
@ManyToMany
@JoinTable(name = "Join_Topic_Keyword",
joinColumns = @JoinColumn(name = "Topic_ID"),
inverseJoinColumns = @JoinColumn(name = "Keyword_ID"))
private Set<Keyword> keywords;
}
@Entity
@Table(name = "Keyword")
public class Keyword implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "keywordID")
private String id;
@ManyToMany(mappedBy = "keywords")
private Set<Topic> topics;
}
Вот таблица структуры.
И это результат Join_Topic_Keyword