2

こんにちは、私は Hibernate にかなり慣れていないので、ばかげたことをしているかもしれません。

私はエンティティを持っています

@Entity
@Table(name="criterion")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class AbstractCriteria implements Criteria{

Criteria child;
List<Criteria> parents;

@Override
@OneToOne(targetEntity=AbstractCriteria.class, cascade={CascadeType.ALL})
@Fetch(FetchMode.SELECT)
@Lazy(true)
public Criteria getChild() {
    return _child;
}

そして、親を計算されたプロパティにしたいです。@Formula を使用してデータベースから取得したい条件には、1 つの子 (DB に保存されますが、複数の親を持つことができます) のみを含めることができます。

親フィールド定義に @Formula を追加しようとしましたが、何もしないようです。親のゲッターを追加したとき

@Formula("(select from betsy.criterion where child_id=id)")
@Override
public List<Criteria> getParents() {
    return _parent;
}

私が得た:

org.hibernate.PropertyNotFoundException: Could not find a setter for property parent in class
enter code here`com.bge.domain.data.criteria.RangeCriteria

RangeCriteria は AbstractCriteria を拡張します。

@Entity
@Table(name="Range_criterion")
@ForeignKey(name = "Range_criteria_id")
public class RangeCriteria extends AbstractCriteria {

  private double _fromRange;
  private double _toRange;
}

どんな助けでも大歓迎です。ありがとう。

4

0 に答える 0