【问题标题】:Include code in getter while using Criteria + projection使用 Criteria + 投影时在 getter 中包含代码
【发布时间】:2018-01-03 15:50:13
【问题描述】:

我在一个实体中有这个吸气剂:

    public String getEmpType() {
    return empType == null ? "EMP" : empType;
}

我在道中使用标准+投影:

Criteria criteria = session.createCriteria(Employee.class); criteria.add(Restrictions.eq("employeeKey",key)) .setProjection(Projections.projectionList().add(Projections.property("empType")));

现在我想在 getter 中应用相同的规则(即,如果 empType 是 null,则将其设置为 EMP)而不在这里复制代码.. 有没有办法这样做? 即我希望Criteria 在实体中使用getter 注意:我使用的是休眠 3.1.0

【问题讨论】:

  • 愚蠢的问题为什么 empType 显然有默认值时可以为空?
  • 谢谢你的礼貌......实际上这是(遗留代码+业务规则+数据库数据格式)已经改变了10多年,所以回答你的问题需要大量讨论,这里不合适,但你可以缩短它并接受我的答案(我现在无法更改的旧代码)

标签: java hibernate hibernate-criteria


【解决方案1】:

使用可以在两种情况下都使用的静态方法创建一个类,例如

public class EmpTypeHelper {

    public static String getEmpTypeOrDefault(String emptType) {
        return empType == null ? "EMP" : empType;
    }
}

【讨论】:

  • 定义一个静态方法实际上是我想到的第一个答案..但我很好奇我是否可以调整hibernate以在标准(或类似的东西)中使用getter而不是字段本身
  • 否,因为 getter 绑定到对象实例并且不是静态的
猜你喜欢
  • 2014-12-11
  • 2010-12-13
  • 2015-10-15
  • 2014-05-27
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
相关资源
最近更新 更多