我有一个 Java 应用程序,它使用 EntityManager 来查询 Oracle 数据库并填充一个简单的 DTO 类。
这对于 varchar 和字符串来说很好 - 但会引发错误:
无法确定适当的实例化策略 - 未找到匹配的构造函数,并且一个或多个参数未定义 bean 注入的别名
当我尝试传递十进制值时。我尝试将 DTO 中的类型设为 Double、double 和 BigDecimal - 但仍然收到错误
另外 - 当它在 Java 8 上运行时,它曾经有效。我不得不升级到 Java 17,然后它开始抛出错误。
@PersistenceContext
private EntityManager em;
String hql = "SELECT new my.example.MyDTO(mt.intVal as intVal, mt.decVal as decVal) " +
"FROM MyTable mt " +
"WHERE mt.id = 1234";
TypedQuery<MyDTO> findInsultsQuery = em.createQuery(hql, MyDTO.class);
//Here is where it gets the error - because of the mt.decVal
List<MyDTO> results = findInsultsQuery.getResultList();
这是 DTO 类。我还尝试过将第二个参数设为 Double、double、Float 和 float。它总是抛出不匹配的构造函数错误。
public MyDTO(BigInteger intVal, BigDecimal decVal) {
}
有什么建议吗?