我正在使用 JPA/Hibernate + Spring 构建基于类别的 Web 应用程序多语言
我目前构建了这三个 bean/实体:Category、CategoryLanguage 和 Language。
类别:
@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 中使用“join on ”,可以吗?