指定Hibernate的aliasToBean使用的setter

时间:2016-11-23 09:53:28

标签: java hibernate setter

我正在使用aliasToBean将Criteria结果集转换为我的自定义DTO;

criteria.setResultTransformer(Transformers.aliasToBean(CustomEntity.class));

其中一个属性; id以整数形式返回。

我有以下两个二传手:

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

所以变压器选错了。

问:有没有办法告诉变压器使用哪个安装人员?

1 个答案:

答案 0 :(得分:1)

不,您的自定义DTO应该具有JavaBeans中定义的setter 但是你可以添加其他方法来操作字段,但是Hibernate需要适当的setter。

但我通常更喜欢手动获取结果,例如通过query.list()返回List<Object[]>并通过提取列表来构建DTO。