我在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中,我认为这可能有点过分。
答案 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