@Entity
//I am only interested in Donuts that have NOT been eaten
@Where(clause = "EATEN_YN = 'N'")
public class Donut {
@Column(name = "FILLING")
private String filling;
@Column(name = "GLAZED")
private boolean glazed = true;
@Column(name = "EATEN_YN")
private boolean eaten = false;
...
}
4条答案
按热度按时间pgky5nke1#
您可以创建一个视图,然后将该视图Map到实体:
一种方法是正常Map表,然后可以通过查询或过滤器获取always实体。
您还可以进行本机sql查询并将实体Map到结果:
也可以将distinct添加到此类型的hql查询中:
方法1、3和4将生成只读Map。
你能更具体地说明你使用的标准吗?视图方法更通用,因为不能用hibernate查询或过滤器完成所有操作。
fdbelqdn2#
除了juha提到的选项之外,还可以使用namednativequery和sqlresultsetmapping注解直接从sql查询中创建对象。
根据您的口味调整sql查询
qjp7pelc3#
也许您可以创建一个新的pojo来封装字段和它们应该统计的条件。然后将该类设置为“自定义用户定义类型”,这样hibernate就必须使用您提供的Map类来Map该“类型”。。
px9o7tmv4#
我建议你使用
@Where
注解。此注解可用于集合的元素实体或目标实体。您提供了一个用sql编写的子句属性,该属性将应用于hibernate对该实体执行的任何select。这是非常容易使用和非常可读。下面是一个例子。