私はEclipse(Helios)でHibernateツール3.40を使用しています。EJB3スタイル(つまりJPA2.0アノテーション)を使用してDB(MSSQL 2008)からPOJOを生成しようとしています。
2つのテーブルがA
ありB
、そこにからA
への外部キーがあるとしB
ます。
これはPOJOのため、デフォルトでは、生成しA
ていたB
メンバー(その「親」)とのためのPOJOとしてB
持っていたSet<A>
としてメンバーを(その「子」)。
アソシエーションの片側のみが作成されるようにrev-engを制御する方法を知りたいです(私はさまざまなユースケースを持っているため、基本的に3つのオプションすべてが私にとって重要です)。
アノテーションとJPA2.0を使用しているため、hbm.xmlファイルを使用したくありませんが、hibernae.reveng.xmlを使用して休止状態にするリバースエンジニアリングプロセスでメタデータを指定できます
私はforeign-key
属性を構成してそこに定義しようとしましたexclude=true
が、それは私に1つのシナリオに対して半分の答えしか提供しませんでした。これA
により、許容可能で理解可能なbPK intメンバーを含むPOJOが生成されましたが、生成されたPOJOはB
、one-to-many
注釈に無効な属性があるためコンパイルできません。mappedby="unresolved"
事実によるものでA
、もはや休止状態revengがに戻ってマッピングすることができる性質を持っていません。
そのため、現在、一方向の関連付けを作成することはできません。ご協力いただければ幸いです。
reveng. strategy
atのクラスを作成するHibernate Code Generation Configuration
例:
public class MyReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {
public MyReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
super(delegate);
}
@Override
public void setSettings(ReverseEngineeringSettings settings) {
super.setSettings(settings);
}
@Override
public boolean excludeForeignKeyAsCollection(String keyname,
TableIdentifier fromTable, java.util.List fromColumns,
TableIdentifier referencedTable, java.util.List referencedColumns) {
// TODO : Your work here
if (keyname.equals("___") &&
fromTable.getName().equals("___") &&
fromColumns.contains("___") &&
referencedTable.getName().equals("___") &&
referencedColumns.contains("___")) {
return true;
}
return false;
}
}
メソッドのJavaDoc excludeForeignKeyAsCollection
Should this foreignkey be excluded as a oneToMany
そして別のメソッド呼び出しもあります excludeForeignKeyAsManytoOne
Should this foreignkey be excluded as a many-to-one
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加