実装として休止状態で JPA を使用しています。次の DTO があるとします。
public class SupplierInfoDto{
private String supplierName;
private BigDecimal remainingFinances;
public SupplierInfoDto(String supplierName, BigDecimal remainingFinances){
this.supplierName = supplierName;
this.remainingFinances = remainingFinances;
}
// getters / setters
}
このコンストラクターを適切に見つけるために休止状態にできないようです。最初に次のクエリを試してみました (モデルはこれよりも複雑で、最終的に (エンティティで直接ではなく) いくつかの集計をフェッチする必要があるため、エンティティではなく DTO をフェッチしています):
SELECT NEW com.company.dto.SupplierInfoDto(s.name, f.remaining)
FROM Supplier s INNER JOIN Finances f
WHERE s.id = :SupplierId
ただし、 org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class
例外があります。
私が選択しているremaining
列は、MSSQL に float として格納されています (お金を float として格納してはならないことはわかっていますが、これは既存のシステムであり、このデータ型を変更することはできません)。
テストとして、次のクエリを試しましたが、上記と同じ例外があります。
SELECT NEW com.company.dto.SupplierInfoDto(s.name, NEW java.math.BigDecimal(10))
FROM Supplier s
WHERE s.id = :SupplierId
私の質問は次のとおりです。休止状態/JPAに上記の2つのクエリに適したコンストラクターを見つけるにはどうすればよいですか?
更新:プロパティは、Finances エンティティで double 型です(remaining
私の決定ではありません)。