我正在重写现有应用程序的很大一部分。我们有Group
个SuperGroup
。
Actualy,groupe只能存储一个stringValue。
为了尊重项目的新范围,我们希望Group
存储多个值,如日期,数字和布尔值。 Group
的类型取决于SuperGroup
内存储的值。 (它还存储组值的格式,但这并不重要)
该应用程序的目的之一是按组值搜索。这是我的问题。
在服务中,我需要实现将调用DAO的搜索,并确定我必须进行搜索。
我的问题在标题中。在ServiceImpl中使用StaticMetamodel(JPA)是不好的做法吗?
为了说明我的问题,这是服务方法。
public Groupe getGroupeBySuperGroupeAndEntrepriseAndValue(SuperGroupe superGroupe, Entreprise entreprise, String value) {
if (entreprise == null || StringUtils.isBlank(value)) {
return null;
}
GroupeDataTypeEnum groupeDataTypeEnum = GroupeDataTypeEnum.getGroupeDataTypeByTypeValue(superGroupe.getDataType());
Object finalValue;
SingularAttribute singularAttribute;
switch (groupeDataTypeEnum) {
case STRING_DATA_TYPE:
finalValue = value;
singularAttribute = Groupe_.stringValue;
break;
case NUMBER_DATA_TYPE:
finalValue = FormatUtils.formatStringToDouble(superGroupe.getDataFormat(), value);
singularAttribute = Groupe_.numberValue;
break;
case DATE_DATA_TYPE:
finalValue = FormatUtils.formatStringToDate(superGroupe.getDataFormat(), value);
singularAttribute = Groupe_.dateValue;
break;
case BOOLEAN_DATA_TYPE:
finalValue = FormatUtils.formatStringToBoolean(superGroupe.getDataFormat(), value);
singularAttribute = Groupe_.booleanValue;
break;
default :
finalValue = null;
break;
}
return groupeDAO.getGroupeBySuperGroupeAndEntrepriseAndValue(superGroupe, entreprise, finalValue, singularAttribute);
}
在DAO中,搜索参数中传递的单数属性。
我的问题纯粹是概念性的。是否可以使用由服务中的org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
生成的SingularAttribute。如果我们离开Hibernate,我可能会失去那个StaticMetamodel,所以我们会有bug。但我们可以重新生成它们,因为StaticMetamodel是Java stanndard。
有没有更好的方法来做我想要的事情?
我需要一些帮助来清除我的想法。提前谢谢,欢迎任何回复。