java - 在 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??
}
}
解决方案
@NamedQuery 是不可能的,但 @Formula 可用于计算属性。
推荐阅读
- c# - 从列表中计算日期并返回日期格式 0:0:0 的总和
- scroll - Jquery DataTables - 启用滚动 Y 时删除表中具有复杂标题的最后一行
- oracle - Oracle Forms Builder 11g 连接(无响应)
- r - 理解 R 函数中的可选参数
- sql-server - 在 SQL Server 中将行转换为 N 列
- gcc - GCC 代码似乎违反了内联汇编规则,但专家认为并非如此
- ios - 为什么不能从一个 URL 得到响应?
- r - 返回匹配的向量索引
- android - 如何从 S3 在 android 游戏中加载 swf 文件
- selenium-webdriver - 无需人工干预即可触发 selenium 项目