1

次のエンティティを検討します。Child クラスが 2 つの派生食品クラス ( Local Food または Foreign ) のいずれかを参照するようにします。これは不自然な例です。私の実際のドメイン オブジェクトは非常に複雑です。したがって、たとえば FoodType 列を組み合わせて使用​​することはオプションではありません。

@MappedSuperclass
public abstract class Food {

}



@Entity
public class LocalFood extends Food {

private long id;
private String name;
}


@Entity
public class ForeignFood extends Food {

    private long id;
    private String name;
}



@Entity
public class Child {    
private Food food; //Base Class needed here 
@ManyToOne()
public Food getFood() {
    return food;
}
}

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on                     com.sample.Child.food references an unknown entity: com.sample.Food

継承と弁別子も使用しません。

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Food {

private long id; // set , get (Auto gen) 
}

この種のマッピングを機能させることは可能ですか?

4

1 に答える 1

2

JBニゼットは正しかった。今のフードクラスはこんな感じです。

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Food {

 private long id;

 public void setId(long id) {
    this.id = id;
 }

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 public long getId() {
    return id;
 }

}

サブクラスから id を削除しました。

于 2012-07-18T14:04:00.653 に答える