You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Jason Hanna <ja...@gmail.com> on 2008/12/19 18:22:27 UTC
Proper Use of @ReadOnly Annotation
Hi All,
I'm having some trouble getting the @ReadOnly annotation working on my project.
It appears from the javadoc there is an attribute called 'value' of
type UpdateAction. In order to compile my code it seems I need an
annotation like this (which seems unusual):
@Column(name="create_ts")
@ReadOnly(value=UpdateAction.valueOf("IGNORE"))
public java.util.Date getInsertDatetime() {
...
}
Not sure why value requires a type of UpdateAction - it seems an odd
way. This is the only way I've been able to compile with this
annotation, however (using Sun JDK 1.6.0_11).
Unfortunately when my build tool attempts to enhance this classe I'm
now getting the following exception:
[java] Exception in thread "main"
java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
typed data found for annotation element public abstract
org.apache.openjpa.persistence.UpdateAction
org.apache.openjpa.persistence.ReadOnly.value() (Found data of type
Lorg/apache/openjpa/persistence/UpdateAction;.IGNORE)
[java] at
sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy.generateException(AnnotationTypeMismatchExceptionProxy.java:38)
[java] at
sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:56)
[java] at $Proxy7.value(Unknown Source)
[java] at
org.apache.openjpa.persistence.AnnotationPersistenceMetaDataParser.parseReadOnly(AnnotationPersistenceMetaDataParser.java:1160)
[java] at
org.apache.openjpa.persistence.AnnotationPersistenceMetaDataParser.parseMemberAnnotations(AnnotationPersistenceMetaDataParser.java:1120)
[java] at
org.apache.openjpa.persistence.AnnotationPersistenceMetaDataParser.parseClassAnnotations(AnnotationPersistenceMetaDataParser.java:612)
[java] at
org.apache.openjpa.persistence.AnnotationPersistenceMetaDataParser.parse(AnnotationPersistenceMetaDataParser.java:352)
[java] at
org.apache.openjpa.persistence.PersistenceMetaDataFactory.load(PersistenceMetaDataFactory.java:229)
[java] at
org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:474)
[java] at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:294)
[java] at
org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:248)
[java] at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4492)
[java] at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4439)
[java] at
org.apache.openjpa.enhance.PCEnhancer$1.run(PCEnhancer.java:4409)
[java] at
org.apache.openjpa.lib.conf.Configurations.launchRunnable(Configurations.java:708)
[java] at
org.apache.openjpa.lib.conf.Configurations.runAgainstAllAnchors(Configurations.java:698)
[java] at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4404)
[java] at
org.apache.openjpa.enhance.PCEnhancer.main(PCEnhancer.java:4395)
[java] Java Result: 1
What am I doing wrong here? I would think I should be able to use the
annotation like this:
@ReadOnly(value=UpdateAction.IGNORE)
But that's clearly a type mis-match at compile time.
Thanks,
-jmh
PS - An example in the manual or javadocs would be helpful!