0

私は以下のように3つのエンティティを持っています:

  1. 財産
  2. プロパティ_ドキュメント
  3. プロパティ_ユーザー

PropertyProperty_Document1 対多の関係があります。
PropertyProperty_User1 対 1 の関係があります。

データベース レベルでは、Property_User は外部キー「property_id」を持ち、Property テーブルに戻ります。

アノテーションを使用して、エンティティ間のマッピングと関係を定義しています。

プロパティ.java

public class Property {
    //.....
    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="property_id")
    private List<PropertyDocuments> docs;

    @OneToOne(cascade=CascadeType.ALL)
    private PropertyUser owner;
    //....
}

PropertyUser.java

public class PropertyUser {
    @Id
    private int id;

    @column
    private String name;
    //......
}

プロパティをフェッチすると、ドキュメント リストは正常にフェッチされますが、ユーザー情報をフェッチしようとすると、以下のエラー メッセージが表示されます。

column: owner_id doesn't exist.

助けてください。ありがとう。

4

1 に答える 1

2

参照するユーザーの ID を保持するには、「プロパティ」テーブルに列が必要です。マッピングで列を指定しなかったため、Hibernate はデフォルトの列名である owner_id (プロパティの名前の後に参照する列の名前が続く) を使用します。別の列名を使用したい場合は、Hibernate に伝える必要があります: 魔法のように推測することはできません:

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "the_column_containing_the_id_of_the_referenced_user")
private PropertyUser owner;
于 2012-06-10T13:13:41.510 に答える