10

たとえば、エンティティがあります

public class Foo {
   private String col1;
   private String col2;
   private String col3;
   private String col4;

   //getters and setters   
}

私がやりたいのは、 とだけselectです。しかし、私はすでに以下のようなコンストラクタを持っています:col3col4Foo

public Foo (String col1, String col2) {
   this.col1 = col1;
   this.col2 = col2;
}

したがって、同じ署名を持つため、 col3andの別のコンストラクターを持つことはできません。col4

これまでに達成しようとしているのは、次のような完全なコンストラクターを作成することです。

public Foo (String col1, String col2, String col3, String col4) {
   this.col1 = col1;
   this.col2 = col2;
   this.col3 = col3;
   this.col4 = col4;
}

しかし、クエリで以下のようなことをしようとすると

SELECT new Foo(null, null, f.col3, f.col4)
FROM Foo f

私は得る

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected end of subtree

私がしようとすると

SELECT new Foo(f.col1, f.col2, f.col3, f.col4)
FROM Foo f

期待どおりに動作します。

編集:

私は試した

Select f.col3, col4..

そして、以下のエラーがスローされました

org.springframework.dao.InvalidDataAccessApiUsageException: Cannot create TypedQuery for query with more than one return using requested result type [com.lala.entity.Foo]; nested exception is java.lang.IllegalArgumentException: Cannot create TypedQuery for query with more than one return using requested result type [com.lala.entity.Foo]
4

2 に答える 2