エンティティがテーブルを介して接続されているHibernateに親子マッピングがあります。
問題は、このテーブルで休止状態によって自動的に作成された列がのように呼び出されることです"_actions_id"
。しかし、私はOracleを使用しており、列名"_actions_id"
が無効であると表示されます。
名前をでラップし""
てスクリプトを手動で実行すると正常に機能しますが、休止状態にしてすべての列をラップする方法はあります""
か?
あなたの例では、このようなシナリオ用の結合テーブルを指定しました
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とこの質問を参照してください。
カスタムNamingStrategyが必要だと思います。ここでアイデアを得ました。あなたの場合、それは次のようになります:
public class MyNamingStrategy extends DefaultNamingStrategy {
public String logicalCollectionColumnName(String columnName, String propertyName, String referencedColumn) {
return "`" + super.logicalCollectionColumnName(columnName, propertyName, referencedColumn + "`";
}
}