指定 Hibernate 的 aliasToBean 使用的 setter
Specifying the setters to be used by Hibernate's aliasToBean
我正在使用 aliasToBean
将标准结果集转换为我的自定义 DTO;
criteria.setResultTransformer(Transformers.aliasToBean(CustomEntity.class));
属性之一; id
作为整数返回。
我有以下两个 setter:
public void setId(Integer Id) {
this.uitId = String.valueOf(Id);
}
public void setId(String Id) {
this.uitId = Id;
}
我得到以下异常:
10:43:30.009 [main] ERROR org.hibernate.property.BasicPropertyAccessor - IllegalArgumentException in class: com.package.example.CustomEntity, setter method of property: Id
10:43:30.011 [main] ERROR org.hibernate.property.BasicPropertyAccessor - expected type: java.lang.String, actual value: java.lang.Integer
所以变压器选错了setter。
问:有什么办法可以告诉transformer使用哪个setter?
不,您的自定义 DTO 应该具有 JavaBeans 中定义的 setter
但是您可以添加其他方法来操作字段,但是 Hibernate 需要适当的 setters.
但我通常更喜欢手动获取结果,例如通过 query.list()
which returns a List<Object[]>
并通过从列表中提取来构建 DTO。
我正在使用 aliasToBean
将标准结果集转换为我的自定义 DTO;
criteria.setResultTransformer(Transformers.aliasToBean(CustomEntity.class));
属性之一; id
作为整数返回。
我有以下两个 setter:
public void setId(Integer Id) {
this.uitId = String.valueOf(Id);
}
public void setId(String Id) {
this.uitId = Id;
}
我得到以下异常:
10:43:30.009 [main] ERROR org.hibernate.property.BasicPropertyAccessor - IllegalArgumentException in class: com.package.example.CustomEntity, setter method of property: Id
10:43:30.011 [main] ERROR org.hibernate.property.BasicPropertyAccessor - expected type: java.lang.String, actual value: java.lang.Integer
所以变压器选错了setter。
问:有什么办法可以告诉transformer使用哪个setter?
不,您的自定义 DTO 应该具有 JavaBeans 中定义的 setter 但是您可以添加其他方法来操作字段,但是 Hibernate 需要适当的 setters.
但我通常更喜欢手动获取结果,例如通过 query.list()
which returns a List<Object[]>
并通过从列表中提取来构建 DTO。