2013-11-15 3 views
0

바이트 배열 형식의 필드가있는 엔터티가 있습니다.MetaModel 자동 생성 (OpenJPA)에서 클래스 필드를 제외하는 방법

배포하는 동안 정적 메타 모델에서 오류가 발생합니다.

해당 입력란에서 검색어를 입력하고 싶지만 수정하지 않으려 고 시도합니다. 이진 데이터 @Lob입니다.

컴파일 할 때 auto-gen이 필드를 건너 뛰게하려면 @Annotation이 있습니까? 심지어 한 학급조차도, 수정을 기다리는 동안에 만 해당 클래스에 대해 JPQL을 사용하여 도망 갈 수 있습니다.

저는 Rational App에서 작업하고 있습니다. 개발자 (이클립스 /는 OpenJPA)

감사합니다,

티에리 Dupard

+0

평균 시간 -Aopenjpa.Compatibility = "컴파일 도구의 동작을 변경하는 경우 : 모델을 다시 생성하면 이 모델을 다시 추가 할 때 UseListAttributeForArrays = false – TDupard

+0

실제 오류가 발생했습니다 (런타임에만이 방법으로 컴파일됩니다 ...) : java.lang.IllegalArgumentException : 정적 javax.persistence.metamodel.SingularAttribute 필드 com.mycompany.ejb.entity를 설정할 수 없습니다. .Myclass_.fileContent to org.apache.openjpa.persistence.meta.Members $ ListAttributeImpl – TDupard

+0

실제로 간단한 답변을 찾았습니다. Eclipse 또는 RAD의 BuildPath 소스 탭에서 MetaModel 세대가 컴파일러와 연결되어 있기 때문에 프로젝트 고유의 제외 패턴을 사용할 수 있습니다. 나는 여전히 클래스를 컴파일하기를 원하지만 MetaModel 소스 폴더에 패턴을 적용하는 것은 * /. java 버전이 아니기 때문에 트릭 즉 "/.apt_generated" – TDupard

답변

1

당신은 컴파일 후 파일을 삭제할 수 있습니다 :이 persistence.xml을 속성으로 문제를 완화 할 수

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-antrun-plugin</artifactId> 
<version>1.7</version> 
<executions> 
    <execution> 
     <phase>compile</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <tasks> 
       <delete> 
        <fileset dir="${project.build.outputDirectory}/../generated-sources/annotations/org/...="*.java" /> 
        <fileset dir="${project.build.outputDirectory}/org/..." includes="*_.class" /> 
       </delete> 
      </tasks> 
     </configuration> 
    </execution> 
</executions> 
</plugin>