java - 指定 Hibernate 的 aliasToBean 使用的 setter

标签 java hibernate setter

我正在使用 aliasToBean 将 Criteria 结果集转换为我的自定义 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 。

问:有什么方法可以告诉变压器使用哪个 setter 吗?

最佳答案

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

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

关于java - 指定 Hibernate 的 aliasToBean 使用的 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40761021/

相关文章:

java - 如何从HashMap中获取一些随机键

java - 在java中创建一个gui元素

java - Java 中 PDU 到文本的转换

c++ - 设置引用c++

javascript - Javascript 中的静态变量只设置一次

java - Xtext:这个异常是什么意思?

hibernate - 如何配置 Grails 3.1.1 以使用 Hibernate 5

java - “Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1;”-使用@Scheduled方法调用删除时

java - 使用 hibernate 获取一对多映射中的更新行

java - 如何修改我的 setter 方法来更新结果?