在Hibernate投影属性上应用函数

时间:2015-07-18 23:04:18

标签: hibernate spring-mvc

我在Hibernate 4上有一个Criteria查询,它使用像这样的投影列表;

    Criteria c = getSession().createCriteria(Question.class);

    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.property("id"), "id");
    projectionList.add(Projections.property("type"), "type");

问题是,类型是一个枚举值,我有一个帮助类,它将通用枚举映射到我想要调用的资源字符串。即:

resourceHelper.getEnumResource(QuestionType.xxxx);

该投影是否可以调用我的帮助方法?我能想到的唯一解决方案是将方法添加到枚举本身,但这会迫使我将@SutoWire的MessageSource实例(我使用Spring)添加到Enum中,我认为这可能有点过分。

1 个答案:

答案 0 :(得分:1)

正如@Amogh在评论中所说,这是我感觉最好和最正确的方式。您尚未发布您的DTO代码,因为它很难以代码格式显示。

执行此操作我认为您在DTO课程中拥有属性void StartingPrices(Car& mercedes){ std::cout << Mercedes.GetMin() << "\n"; // Here the GetMin method will return 100. ... } int main(){ .... Car Mercedes; Mercedes.SetMin(100); StartingPrices(Mercedes); .... } ,根据投影存储constructor的值。

添加一个保存questionType的属性,如:

type

//只有getter

EnumResource

private EnumResource enumResource; 的setter中你已经有代码在代码行的下方设置public EnumResource getEnumResource() { return this.enumResource; } 添加添加以下行,它将设置enumResource的值:

questionType