フィールドがテーブルに固有ではなくクエリに関連するエンティティを作成しようとしています。たとえば、次のようにテーブルに関連付けられていないHibernateエンティティを作成します。
@Entity
class MyEntity{
@column("bookTitle ")
private String bookTitle;
@Column("rating ")
private Double rating;
@Column("sum")
private Integer sum;
}
これらのフィールドは任意のテーブルの列ではありませんが、まだ私が欲しい:bookTitleで、評価AS o2.rate、合計AS o3.totalNumber AS SELECT o1.bookName ...
のEntityManager .createQuery(my above query、MyEntity.class)は、MyEntity型のクラスを期待どおりに返します。
残念ながら、Hibernateは「列が見つかりません」という文句を言います。 EclipseLink、またはToplinkではうまくいきます。さらに、私の意見では、エンティティは特定のテーブルに関連付けるべきではなく、無作為に収集される一連の列を保持する必要があります。
ありがとう、私はこの解決策を認識していますが、それはエレガントではありません –
ところで、あなたのクエリがそれらを選択している限り、テーブルに常駐していない休止状態のエンティティ内に新しい列を宣言することは可能です。言い換えれば、エンティティフィールドをマップし、選択にこのフィールドが含まれていない場合にのみ、hibernateは文句を言います –