0

エンティティがテーブルを介して接続されているHibernateに親子マッピングがあります。

問題は、このテーブルで休止状態によって自動的に作成された列がのように呼び出されることです"_actions_id"。しかし、私はOracleを使用しており、列名"_actions_id"が無効であると表示されます。

名前をでラップし""てスクリプトを手動で実行すると正常に機能しますが、休止状態にしてすべての列をラップする方法はあります""か?

4

2 に答える 2

1

あなたの例では、このようなシナリオ用の結合テーブルを指定しました

People table:
PID | Name
1   | Albert
2   | Bob


TelephoneNumbers table:
TID | Tel
1   | 123-456
2   | 456-789
3   | 789-012

Join table:
PID | TID
1   | 1
1   | 2
2   | 3

つまり、現在のエンティティをコレクション内のエンティティに接続する列は、現在のテーブルにもコレクション エンティティのテーブルにもありません。TelephoneNumbersこれは、多対多マッピングの場合により便利ですが、たとえばテーブルを制御できない場合は、OneToMany にも使用できます。それ以外の場合は、プレーンを使用する必要があります@JoinColumn

の使用法は@JoinTable、多くの Web サイトで何度も説明されています。JavaDocとこの質問を参照してください。

于 2012-06-05T00:40:35.947 に答える
0

カスタムNamingStrategyが必要だと思います。ここでアイデアを得ました。あなたの場合、それは次のようになります:

public class MyNamingStrategy extends DefaultNamingStrategy {
    public String logicalCollectionColumnName(String columnName, String propertyName, String referencedColumn) {
        return "`" + super.logicalCollectionColumnName(columnName, propertyName, referencedColumn + "`";
    }
}
于 2012-06-04T23:09:51.043 に答える