User オブジェクト (user_from および user_to) に関連付けられた Message オブジェクトがあります。Hibernate (JPA アノテーション付き) を使用して Message インスタンスをデータベースに永続化し、user_id を永続化します。
User オブジェクトもデータベースに保存されますが、メッセージを取得するときは、データベースからではなくメモリ内の Map から User を取得したいと考えています。
その理由は、データベース (Facebook データ) に永続化できないいくつかの一時的な属性があり、Facebook データが既にメモリに読み込まれている場合、Facebook にデータを再クエリしたくないためです。
これは可能ですか、または UserType を作成することによって行う必要がありますか? UserType、Message、User、またはカスタム マッパーとして定義する必要があるクラスはどれですか? カスタムマッパーの場合、JPA アノテーションを使用してマッパーを関連付けるにはどうすればよいですか (構成を使用して meta-type="com.example.hibernate.customtype.CustomerTypeMapper" を設定する例を見ました)
ご助力ありがとうございます!
ユーザークラス:
@Entity(name="com.company.model.user")
@Table(name = "user")
public class User {
private Long id;
private Long fbId;
private String firstName;
private URL picThumbnailUrl;
//...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getFbId() {
return fbId;
}
public void setFbId(Long fbId) {
this.fbId = fbId;
}
@Transient @FacebookField
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Transient @FacebookField
public URL getPicThumbnailUrl() {
return picThumbnailUrl;
}
public void setPicThumbnailUrl(URL picThumbnailUrl) {
this.picThumbnailUrl = picThumbnailUrl;
}
//....
}
メッセージ クラス:
@Entity(name="com.company.model.message")
@Table(name = "message")
public class Message {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
@JoinColumn(name="user_id_from")
private User from;
@ManyToOne
@JoinColumn(name="user_id_to")
private User to;
private String text;
//...
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public User getFrom() {
return from;
}
public void setFrom(User from) {
this.from = from;
}
public User getTo() {
return to;
}
public void setTo(User to) {
this.to = to;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
//....
}