2009-10-23 9 views
8

ho aggiunto la seguente annotazione per abilitare la cache a uno dei miei soggetti EJB3, per testare la cache con EHCache, dove io uso Hibernate come provider di persistenza:annotazione @Cache errore di utilizzo

.... 
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 { 
    ..... 
} 

ho aggiunto quanto segue per 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"/> 

E quando provo a compilare ricevo il seguente errore:

/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

Qualcuno può aiutarmi qui e farmi sapere cosa devo fare o sto sbagliando attualmente?

risposta

0

Non stai facendo nulla di sbagliato - le tue annotazioni vanno bene.

A giudicare dal messaggio di errore si tratta di un bug del compilatore. È possibile:

  1. Update to the latest JDK version (1.6.0_16-b01).
  2. Riordina le tue annotazioni e sperare che il bug del compilatore non venga attivato. Sì, sembra sciocco, ma ho usato ampiamente le dichiarazioni @Cache (come sono sicuro che molte altre persone lo hanno fatto) e non ho problemi con la compilazione, il che significa che hai appena ottenuto (dis) fortuna.
  3. Provare un compilatore diverso (compilato da Eclipse)
  4. Inviare una segnalazione di errore a Sun.
2

Bene .. Ho avuto modo di funzionare alla fine. La soluzione per questo è davvero strano e sembra davvero essere un bug segnalato.

Quello che dovevo fare era aggiungere tutte le librerie di Hibernate al mio progetto web/war Netbeans. Una volta che l'ho fatto, gli errori sono andati via.

Questo era strano perché le librerie di Hibernate erano già incluse nel progetto ear che era anche nella libreria di progetto web.

+2

Dato che, si dovrebbe accettare la risposta in modo che la questione è chiusa. – sharakan

+0

Dato che, dovresti menzionare anche le dipendenze mancanti nella tua risposta –

0

È sufficiente aggiungere i vasi di annotazione in ibernazione al progetto Web/guerra.

0

Ho risolto questo cambiando le librerie hibernate da forniti a compilazione nel pom di un progetto Maven più moduli.

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

risolverà il problema

+0

Grazie a questo ha funzionato – amer

Problemi correlati