1

難読化の後、次の例外が発生します。

org.hibernate.AnnotationException: No identifier specified for entity: com.ad.ac.c.a
    at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:268)
    at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:223)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:686)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3977)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3931)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1368)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
    at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1477)
    at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1096)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:278)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:362)

Proguard がエンティティの getter と setter を難読化し、属性の名前を変更することが原因だと思います。

4

1 に答える 1

7

JPAが正しく機能するために必要なproguard構成は次のとおりです

-keepattributes RuntimeVisibleAnnotations
-keep @javax.persistence.* class * {
   *;
}

永続化アノテーションが付けられたすべてのクラスを難読化せずに維持し、ランタイム アノテーションを削除しません。

于 2012-08-26T11:17:22.670 に答える