0

jparepositoriesを使用してhyperjaxb3生成エンティティを保存しているSpringbootアプリケーションでSqlServer42ドライバを使用しています。hyperjaxb3とspringbootで30文字に切り捨てられたSqlServerテーブル/クーム名

PhysicalNamingStrategyStandardImpl.toPhysicalTableName()私はいくつかの文字列でテーブル名の接頭辞を置き換えました。

問題は、テーブル名と列名が30文字の制限に切り捨てられることです。最終的に生成される名前は、(長さ+接頭辞+ tablename)です。

接頭辞を使用しなくても、テーブル名が30文字を超えても、同じものが切り捨てられます。

また、sqlserverでは、名前がの長さになることが確認されています。

SqlServerは30以上のchar名を許可するため、この制限を増やす方法はありますか?

編集:生成されたクラスは、ここでHyperjaxb@Table(name = <Truncated_Value>)

答えて

1

著者でアノテートされています。

HJ3は、データベース間で互換性のある注釈を可能な限り生成しようとします。 30文字の切り捨ては、Oracleから提供されます。

現時点では、default naming strategyでは「ハードコード」されています。これを「簡単に」再構成する方法はありません(つまり、プラグイン設定オプションなどを介して)。唯一の選択肢は、独自の命名戦略を記述するか、デフォルトの命名戦略を記録することです。ここでは、これを行う方法を示してテストプロジェクトです:

https://github.com/highsource/hyperjaxb3/tree/master/ejb/tests/custom-naming

私はあなたが基本的にはorg/jvnet/hyperjaxb3/ejb/plugin/custom/applicationContext.xmlファイルと「拡張子」JARを作成する必要がありますと思う:次に、あなたがこれを追加

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 

    <bean name="naming" class="org.jvnet.hyperjaxb3.ejb.strategy.naming.impl.DefaultNaming"> 
     <property name="reservedNames" ref="reservedNames"/> 
     <property name="ignoring" ref="ignoring"/> 
     <property name="maxIdentifierLength" value="128"/> 
    </bean> 

</beans> 

をアーティファクトをHJ3プラグインのクラスパスに追加します。 Mavenの中01​​、:

<build> 
    <defaultGoal>test</defaultGoal> 
    <plugins> 
     <plugin> 
      <groupId>org.jvnet.hyperjaxb3</groupId> 
      <artifactId>maven-hyperjaxb3-plugin</artifactId> 
      <dependencies> 
       <dependency> 
        <groupId>org.jvnet.hyperjaxb3</groupId> 
        <artifactId>hyperjaxb3-ejb-tests-custom-naming-extension</artifactId> 
        <version>${project.version}</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
</build> 

これはdefault naming configurationを上書きします。

+0

@lexicoreの方に感謝します。 – Sumit

関連する問題