在HQL中组合查询和命名查询

时间:2014-06-17 12:48:22

标签: java spring hibernate hql spring-data-jpa

我正在研究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')

换句话说,在另一个查询中调用命名查询?

提前致谢

0 个答案:

没有答案