キャメルケースをアンダースコアに変換するためにEclipseLinkを取得する方法はありますか?
たとえば、class MyEntity
=>select * from MY_ENTITY
理想的には、persistence.xml にプロパティとして入れることができる事前にパッケージ化されたものです。
キャメルケースをアンダースコアに変換するためにEclipseLinkを取得する方法はありますか?
たとえば、class MyEntity
=>select * from MY_ENTITY
理想的には、persistence.xml にプロパティとして入れることができる事前にパッケージ化されたものです。
それを行うためにセッションカスタマイザを書くことができます。まず、次のようなクラスを作成します。
public class MySessionCustomizer implements SessionCustomizer {
@Override
public void customize(Session session) throws SQLException {
for (ClassDescriptor descriptor : session.getDescriptors().values()) {
//Only change the table name for non-embedable entities with no @Table already
if (!descriptor.getTables().isEmpty() && descriptor.getAlias().equalsIgnoreCase(descriptor.getTableName())) {
String tableName = convertToUnderscore(descriptor.getTableName());
descriptor.setTableName(tableName);
for (IndexDefinition index : descriptor.getTables().get(0).getIndexes()) {
index.setTargetTable(tableName);
}
}
}
}
}
次に、このカスタマイザーを登録する必要があります。次の行を persistence.xml の<properties>
セクションに追加します。
<property name="eclipselink.session.customizer" value="foo.bar.MySessionCustomizer" />