在混淆之后,我得到了以下异常:
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,并更改了属性名称。
发布于 2012-08-26 19:17:23
下面是JPA正常工作所需的proguard配置
-keepattributes RuntimeVisibleAnnotations
-keep @javax.persistence.* class * {
*;
}它将保持所有持久化注解类的清晰化,并且不会删除任何运行时注解。
https://stackoverflow.com/questions/10188500
复制相似问题