0

別のエンティティとのオプションの 1 対 1 の関係を含むエンティティの読み込みに問題があります。

対応するマッピングを使用してエンティティをロードしようとすると、すべて問題ないように見えますが、時々 (CitationInformation対応する なしでa をロードしようとした場合だと思いVenueTopicます)、次の例外が発生します。

org.hibernate.PropertyAccessException: could not set a field value by reflection setter of

これらは私のクラスです:

@Entity
public class CitationInformation {
    @Id
    @GeneratedValue
    private long identifier;

    private String doi;

    @OneToOne(optional = true, targetEntity = VenueTopic.class)
    @JoinColumn(name = "venue")
    @NotFound(action=NotFoundAction.IGNORE)
    private String venue;
    ...
}

@Entity
public class VenueTopic {
    @Id
    private String venueName;
    private String topic;
    ...
}

残念ながら、休止状態のエンティティを、休止状態によって生成されなかった別のテーブルのデータと統合する必要があったため、この汚い状況に対処する必要があります。

@OneToOne私は関係の中で何かを台無しにしたと思います。オプションであるという事実と、欠損値を処理する方法を正しく定義したかどうかはわかりません。

私が望む動作は、CitationInformation常に を含む必要がありますvenueが、関係は同じ を持つエンティティがある場合にのみ存在する必要があります。VenueTopicvenueName

4

1 に答える 1

1

クラス CitationInformation のプライベート String 会場を String 型から VenuTopic 型に変更すると、問題が解決する可能性があると思います。すでに別のエンティティにマッピングしているときに、タイプ文字列を使用している理由がわかりません。

于 2013-01-15T00:03:57.947 に答える