0

階層に 3 つのエンティティがあります。

Request.java

@Entity
@Table(name="Request")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="REQUEST_TYPE", discriminatorType=DiscriminatorType.INTEGER)
@NamedQuery(name="getRequestsById", query="select r from Request r where r.id=:id and r.status=100")
public abstract class Request implemenst Serializable {
...
}

MedicineRequest.java

@Entity
@Table(name="MED_REQUEST")
public abstract class MedicineRequest extends Request {
...
}

ExtendedMedicineRequest.java

@Entity
@Table(name="EXT_MED_REQUEST")
@DiscriminatorValue("1")
public class ExtendedMedicineRequest extends MedicineRequest {
...
}

上記のクエリを実行しようとするとgetRequestsById、次のエラー メッセージが表示されます。

オブジェクト ID "Request-RequestPK@c49aa166" を持つタイプ "Request" の抽象クラスをインスタンス化できません。これは、クラスの継承識別子が正しく構成されていないことを示している可能性があります。

すべてのエンティティはpersistance.xmlで適切に定義されており、識別子列の名前も正しいです。何が問題なのですか??

4

2 に答える 2

-1

理由は「タイプの抽象クラスをインスタンス化できません」です。リクエストクラスは抽象です。なんで?それはエンティティであり、抽象的であってはなりません。

于 2011-11-14T16:00:57.970 に答える