私はこのエンティティを持っています:
@Entity
@Table(name = "entry")
@SqlResultSetMapping(
name = "viewEntry",
entities =
@EntityResult(entityClass = ViewEntry.class,
fields = {
@FieldResult(name="id", column = "id"),
@FieldResult(name="guid", column = "guid"),
@FieldResult(name="link", column = "link"),
@FieldResult(name="descr", column = "descr"),
@FieldResult(name="pubDate", column = "pub_date"),
@FieldResult(name="read", column = "my_read")
}
)
)
public class ViewEntry implements Serializable {
@Id
private Integer id;
private String guid;
private String link;
private String descr;
private Date pubDate;
@Transient
private Boolean read;
}
フィールドread
は別のテーブルに存在するため、JPA マッピング エラーを防ぐために一時的にしました。エンティティのコンテンツを取得するには、次のようなネイティブ クエリを使用します。
select id,guid,link,descr,pub_date,feed_id,user_id,is_read as my_read from entry join user_to_entry ....
-- skipped dynamic part of query
問題は、ネイティブ クエリを自分のエンティティにマップする方法がわからないことです。特に、@Transient フィールドが EntityManager によって無視されるかどうかはわかりません。助けてください。