参照ルックアップ データをマップする 1 つの方法は、jpa で @Enumerated アノテーションを使用することです。ルックアップ値を使用して列挙を作成する必要がありますが、それがとにかく参照データである理由です。
たとえば、評価コードがあり、テーブルに文字列/varchar 値があります。ただし、列挙を使用して使用できます。
@Enumerated(EnumType.STRING)
@Column
public RatingCode getRating() {
return rating;
}
public void setRating(RatingCode rating) {
this.rating = rating;
}
列挙は次のとおりです。
public enum RatingCode {
Core, Star
}
単体テストを使用してすべての値を試すと、参照データを取得する安全な方法であることがわかります。
引き続き HQL を使用して値を取り出し、列挙を値として渡すことができます。
hql = "select r from Rating as r where r.rating = :aEnum"
// and in the call to pass the parameter
qry.setParameter("aEnum", aRatingCode)
列挙は、Rating エンティティ内のフィールドです。
@Entity
@Table
public class Rating {
private Integer rating_Id;
private RatingCode rating;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column
public Integer getRating_Id() {
return rating_Id;
}
public void setRating_Id(Integer rating_Id) {
this.rating_Id = rating_Id;
}
@Enumerated(EnumType.STRING)
@Column
public RatingCode getRating() {
return rating;
}
public void setRating(RatingCode rating) {
this.rating = rating;
}
}
評価を必要とするプロファイルがあるので、列挙を介して評価を検索し、それをプロファイルに追加します。
Profile p = new Profile();
RatingServiceI rs = new RatingService()
Rating r = rs.getRating(RatingCode.Core);
p.setRating(r);