我有休眠的@Entity
名为Video
的字段:
@Column(name="TC_IN")
private BigDecimal tcIn;
@Column(name="TC_OUT")
private BigDecimal tcOut;
在应用程序中,我需要将值转换为另一种格式才能使用它。
所以我添加了字段:
@transient
private String formatTCOut;
public String getFormatTCOut(){
if (formatTCOut==null){
sysParamService = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()).getBean("SysParamService");
formatTCOut = tcOut * sysParamService.findParamByName("accuracy");
}
return formatTCOut
}
是否有权在Hibernate实体内调用其他服务?\
我在服务的
@Transactional( readOnly = true, propagation = Propagation.SUPPORTS )
上方有findParamByName
吗? 最佳答案
我认为这不是一个好的设计,因为它意味着您的Hibernate对象现在永远不能在Web / JSF上下文之外使用。
这降低了代码的可重用性,并使其难以进行单元测试。
来自多个bean或源的数据/值的合并应该在更高的层次上进行。