JPA / Hibernate+Springを使用してカテゴリベースのWebアプリケーション多言語を構築しています
私は現在、Category、CategoryLanguage、Languageの3つのBean/エンティティを作成しました。
カテゴリー:
@Entity
public class Category implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@ManyToOne
private Category father;
@OneToMany(mappedBy = "father")
private List<Category> children;
@OneToMany(mappedBy="category")
private List<CategoryLanguage> categoryLanguages;
カテゴリ言語:
@Entity
public class CategoryLanguage implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@ManyToOne
Category category;
@Column(length = 20, nullable = false)
private String name;
@ManyToOne
private Language language;
と言語
public class Language implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(length=2)
private String id; // en, de, fr, it, es,...
@Column(length=25)
private String name; // English, Deutsch, Français,...
電話で
from Category c join c.categoryLanguages cl where c.father = null and cl.language.id = :lang
適切な言語で最初のレベルのカテゴリを返しますが、子としてすべての言語が含まれています。
クエリで選択した言語ではなく、すべての言語の子が抽出されます。
この問題を解決するにはどうすればよいですか?JPQLで「参加」できません。