我正在研究Spring MVC,Spring Data和Hibernate。
我有一个这样的实体:
常见问题
@Entity
public class Faq extends CAccountOwner implements Serializable{
@OneToOne
@Cascade(CascadeType.ALL)
private DynamicText question;
}
DynamicText
@Entity
public class DynamicText implements Serializable {
@ElementCollection
private Map<Locale, LocalizedDynamicText> localized = new HashMap<Locale, LocalizedDynamicText>();
public DynamicText() {
}
@CollectionTable(name = "localized_dynamic_text")
@MapKeyJoinColumn(name = "dynamic_text_for_locale")
public Map<Locale, LocalizedDynamicText> getLocalized() {
return this.localized;
}
}
(我只通过了班级的重要成绩)
我已创建了一个查询,以便在区域设置“EN”中获取所有 faqs 问题。
select f from Faq f where 'EN' in indices(f.question.localized)
因此,通过 indices 函数返回本地化映射中的键列表。
查询正常,但每次在实体中都有 DynamicText 时,我必须生成查询的那一部分:
where 'EN' in indices(f.myDynamicText.localized)
我想知道是否有办法避免每次写入该部分并通过调用DynamicText实体的特定函数来替换它,如
where f.myDynamicText.fromLocale('EN')
换句话说,在另一个查询中调用命名查询?
提前致谢