首页 > 解决方案 > 在 Hibernate 的实体方法中使用命名查询

问题描述

我有一个实体,它的 @ManyToMany 集合标记为惰性。当我在 JSP 中列出这些实体时,我在每个实体中调用一个方法来决定是否应该显示一个按钮,该方法被开发用于计算该集合中的元素数量,因此如果元素数量过多,它显示 JSP 需要很长时间,因为 Hibernate 会使用它们的所有数据加载整个集合。

我想知道是否有办法从实体中的该方法调用 NamedQuery,例如:

@NamedNativeQuery(
    name="showButton",
    query="SELECT count(distinct(id)) FROM USER where GROUP_ID = :groupId")
@Entity 
class Group {
    ...

    @ManyToMany(mappedBy = "groups", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
        private Set<User> users = new HashSet<User>();
    }

    ...
    public boolean showButton() {
        // Can I call the named query here??
    }
}

标签: javahibernate

解决方案


@NamedQuery 是不可能的,但 @Formula 可用于计算属性。


推荐阅读