我有休眠的@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或源的数据/值的合并应该在更高的层次上进行。

10-08 07:17