0

jparepositories를 사용하여 hyperjaxb3 생성 엔티티를 저장하는 Springboot 응용 프로그램과 함께 SqlServer42 드라이버를 사용하고 있습니다.hyperjaxb3 및 springboot가있는 30 문자로 잘린 SqlServer 테이블/coumn 이름

PhysicalNamingStrategyStandardImpl.toPhysicalTableName() 일부 문자열이 테이블 이름 앞에 붙는 대신 재정의했습니다.

문제는 테이블 이름과 열 이름이 30 자로 제한된다는 것입니다. 최종 생성 된 이름은 char 길이 (접두사 + tablename)입니다.

접두어를 사용하지 않아도 테이블 이름이 30자를 초과하더라도 잘린 부분은 잘립니다.

또한 sqlserver는 이름이 char 길이가 될 수 있음을 확인했습니다.

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 플러그인의 classpath에 아티팩트를 추가합니다. 메이븐에서 For example :

<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