1
我想知道是否有一种方法来使用硬编码值的过滤器注释。我加入了两个名为itemRate和ratemaster的表。费率主人有应用程序rateid和ratekind id的组合键。费率种类ID可以是3个ID中的1个(主要,组件,项目费率)。休眠硬编码值注释
我的产品费率表知道的应用和使用Hibernate进行硬编码引用两个不同的列item_rate和速率(这是主要率),
我的问题是,有没有办法过滤器,所以当我打电话getRate()
它会过滤速率种类ID为0的所有速率,当我拨打getItemRate()
时,它会过滤速率种类为2的所有速率?
我试图做这样的事情来获得速度主人用率那种0:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "CIITM_RATE", nullable = false , updatable = false, insertable = false, referencedColumnName = "RATE"),
@JoinColumn(name = "CIITM_APPLICATION", nullable = false , updatable = false, insertable = false, referencedColumnName = "APPLICATION") })
@FilterJoinTable(name = "kindId", condition="RATEKINDID = 0")
public Ciratemaster getRateMaster() {
return rateMaster;
}
,这让速度主人与利率种2:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "CIITM_ITEM_RATE", nullable = false , updatable = false, insertable = false, referencedColumnName = "RATE"),
@JoinColumn(name = "CIITM_APPLICATION", nullable = false , updatable = false, insertable = false, referencedColumnName = "APPLICATION") })
@FilterJoinTable(name = "kindId", condition="RATEKINDID = 2")
public Ciratemaster getItemRateMaster() {
return itemRateMaster;
}
我试着搜索Hibernate网站和其他网站,没有真正的工作。我总是拿出错误,它取得超过1个结果时,它不应该
在此先感谢。
我试过了,也 '@ org.hibernate.annotations.WhereJoinTable(条款=“RATEKIND = 2“)' – locus2k
您可以验证实际正在生成的SQL没有该子句吗?因为这应该工作得很好。我还会用你的数据库验证,使用正在生成的实际查询,真的只有一个结果。 –
显示的查询来自命名的查询请求,并且没有与其关联的where子句。命名查询是这样的: '查询= entityManager.createNamedQuery(Fciitem.NAMEDQUERY_FINDBYAPPLICATIONANDACCOUNT);'' query.setParameter(Fciitem.NAMEDQUERYPARAMETER_ACCOUNT,accountNum);'' 名单项目= query.getResultList();' –
locus2k