2010-12-01 24 views
2

私は永続化プロバイダとしてEclipselinkを使用しています。列がデータベースに表示される順序を指定する方法はありますか?データベースの列の順序が、自分のエンティティの属性の順序と一致しません。私が理解する限り、アルファベット順に列を並べ替えることはできますが、Eclipselinkの仕様を見つけることはできません。JPAとデータベース内の列の順序

答えて

2

EclipseLinkは、マッピングの重みに基づいてマッピングとその列をソートします。通常、重みは、Baiscマッピングが最初であり、関係マッピングが2番目であることを保証する以外には設定されません。

DescriptorCustomizerを使用したい場合は、マッピングの重みを設定できます。また、記述子を重み付けで順序付けしないように設定することもできるため、指定された順序が使用されます(setShouldOrderMappings(false))。

public void MyCustomizer implements DescriptorCustomizer { 
    public void customize(ClassDescriptor descriptor) { 
    descriptor.getMappingForAttributeName("name").setWeight(2); 
    } 
} 

マッピングは今、同じ量のレベル内名でソートされ、2.2開発中のマッピングの重みにはいくつかの最近の変更がありました。

+0

ありがとうございました! :-) –

+0

正解ですが、 'setShouldOrderMappings(false)'があなたの期待通りに動作しているかどうかわかりません。 AFAIKは、ソースコードファイルで指定されているような注文を得る方法がありません。これは実際にあなたが望むものです。したがって、コード例のように明示的に重みを指定する必要があります。 – peterh

+0

カスタムを使用してこれを行う方法の完全な例は、[このブログ](http://marsparanoma.blogspot.dk/2014/01/how-to-set-column-order-in-jpa-under.html)を参照してください。注釈。 – peterh

関連する問題