フィールドの値を別のエンティティから取得する必要があります。私は次のモデルがあります:他のエンティティ(Hibernate)からのフィールドの値を取得する方法
@Entity
public class ProductOwnerFields {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String customValue;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "templateField_id")
private TemplateFields templateFields;
private int order;
//gettees and setters
}
@Entity
public class TemplateFields{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "order_field")
private int order = 0;
@Column(name = "name")
private String name;
//gettees and setters
}
どのように私はTemplateFieldsの「ORDER」とProductOwnerFieldsの「ORDER」をフィールドに設定し、フィールドの値を得ることができますか? JPAまたはHibernateアノテーションだけが必要です。EntityManagerを使用してください。
私はEntityManager.find(ProductOwnerFields .class、id)を作成し、ProductOwnerFieldsのオブジェクトをTemplateFieldsの "order"から "order"値で取得する必要があります。これは、あなたの質問に答えることができますが、推奨されません
@Entity
public class ProductOwnerFields {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String customValue;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "templateField_id")
private TemplateFields templateFields;
private int order;
@PostLoad
public void postLoad() {
if(templateFields != null) {
this.order = templateFields.getOrder();
}
}
}
:
を? –
ProductOwnerFieldsの "Order"はデータベースに格納されません。将来的にはProductOwnerFieldsレベルの@OrderBy "order"をソートするために使用します –
ProductOwnerFields setterの順番でTemplateFields getterを呼び出してください! – FuSsA