2012-02-22 13 views
0

私は次のような状況を持っている:なし先がなかった場合、エイリアスはいずれも保持していないであろうから、私は、この関係の所有者であるデスティネーションをしたいと思います:は、スキーマ定義に従って定義されたhibernateのmappedByか、それとも論理的に定義されていますか?

つの宛先は、論理的に多くの別名

を持つことができます意味。

しかし、データベーススキーマがこのようなものです:

Destination-Alias relationship

DestinationAlias外部キーとしてidDestinationを有するので、休止状態の注釈で@JoinColumnがDestinationAliasに次のようになります。

先:

@OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL}, mappedBy = "mainCity") 
    public Set<DestinationAlias> getAliases() { 
     return aliases; 
    } 

デスティネーションエリア:

@ManyToOne(fetch=FetchType.LAZY, cascade={CascadeType.ALL}) 
    @JoinColumn(name="IDDESTINATION", nullable=false) 
    public Destination getMainCity() { 
     return mainCity; 
    } 

mappedByがDestinationクラスの属性であるため、この定義から、DestinationAliasはこの関係の所有者です。

休止状態ではdatabase schemaに従って、エンティティを関係の所有者としてマークする必要がありますか、それともLogicalの理由に基づいて行うことができますか?

答えて

0

所有権は、hibernateが基になるデータベーステーブルをどのようにモデル化するかに影響します。 mappedBy属性を省略すると、hibernateは単純な結合列の代わりにDestinationとDestinationAliasの間の結合表(M-M関係のような)を生成します。それ以外は、あなたの実際の問題がここにあるのは興味があります。これは純粋に化粧品ですか、ここでは機能的な問題がありますか?

EDIT:これは純粋に美容的な問題であると思われるので、私のアドバイスは、単にHibernateの意味を受け入れることです。私は、HibernateがDestinationAliasを「所有者」と呼ぶのは、直感的ではないように思われるかもしれませんが、それはHibernateが決めた命名法です。これはユニークではなく、「所有者」がジョイン・カラムが存在するという概念から来ています。

休止する必要がないときに、休止状態を強制的に定義に従わせようと時間を費やさないでください。

+0

私の現在の問題は、DestinationAliasはこの関係の所有者であり、意味的にはDestinationを所有者にしたいと思います。そうでなければコードはうまく動作します。 – brainydexter

+0

@brainydexter上記の編集を参照してください – pap

+0

洞察をいただきありがとうございます。 – brainydexter

関連する問題