2009-10-23 12 views
8

he añadido la siguiente anotación para permitir caché a una de mis entidades EJB3, para probar el almacenamiento en caché con Ehcache, donde uso de Hibernate como el proveedor de persistencia:anotación @Cache error de uso

.... 
import org.hibernate.annotations.Cache; 
import org.hibernate.annotations.CacheConcurrencyStrategy; 

@Entity 
@Table(name = "F") 
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE) 
@NamedQueries({ @NamedQuery(name = "F.findAll", query = "SELECT f FROM F f")}) 
public class F implements Serializable { 
    ..... 
} 

que añadió lo siguiente a persistence.xml:

<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/> 
<property name="hibernate.cache.provider_configuration_file_resource_path" value="/ehcache.xml"/> 
<property name="hibernate.cache.use_second_level_cache" value="true"/> 

Y cuando intento compilar me sale el siguiente error:

/persistence/F.class): warning: Cannot find annotation method 'usage()' in type 'org.hibernate.annotations.Cache': class file for org.hibernate.annotations.Cache not found An exception has occurred in the compiler (1.6.0_16). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you. com.sun.tools.javac.code.Symbol$CompletionFailure: class file for org.hibernate.annotations.CacheConcurrencyStrategy not found

¿Alguien me puede ayudar aquí y decirme lo que tengo que hacer o estoy haciendo mal actualmente?

Respuesta

0

No está haciendo nada malo: sus anotaciones están bien.

A juzgar por el mensaje de error, se trata de un error del compilador. Puede:

  1. Update to the latest JDK version (1.6.0_16-b01).
  2. Reorganiza tus anotaciones y espera que no se active el error del compilador. Sí, suena tonto, pero he usado declaraciones de @Cache extensamente (como estoy seguro de que muchas otras personas lo hicieron) y no tengo problemas con la compilación lo que significa que acabas de tener (no) suerte.
  3. Pruebe con un compilador diferente (compilación desde Eclipse)
  4. Envíe un informe de error a Sun.
2

Bueno ... Llegué a trabajar con el tiempo. La solución es muy extraña y realmente parece ser un error informado.

Lo que tenía que hacer era agregar todas las bibliotecas de Hibernate a mi proyecto web/war de Netbeans también. Una vez que hice eso, los errores desaparecieron.

Esto era extraño porque las bibliotecas de Hibernate ya estaban incluidas en el proyecto ear, que también estaba en la biblioteca del proyecto web.

+2

Teniendo en cuenta que, usted debe aceptar su respuesta por lo que esta cuestión está cerrada. – sharakan

+0

Dado que, también debe mencionar las dependencias que faltan en su respuesta –

0

Solo tiene que agregar los tarros hibernate-annotations a su proyecto web/war.

0

He resuelto esto cambiando las bibliotecas de hibernación de proporcionados a compilar en el pom de un proyecto de módulo de múltiples experto.

1
@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE) 

va a resolver el problema

+0

Gracias esto funcionó – amer