2009-10-23 39 views
8

dodałem następujące adnotacji, aby włączyć pamięć podręczną do jednego z moich jednostek EJB3, aby przetestować buforowanie z ehcache, gdzie używam hibernacji jako dostawca trwałość:@Cache adnotacja błąd Wykorzystanie

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

dodałem do następujących 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"/> 

I gdy próbuję skompilować otrzymuję następujący błąd:

/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

Czy ktoś może mi pomóc tutaj i dać mi znać, co mam teraz robić lub robię źle?

Odpowiedz

0

Nie robisz nic złego - twoje adnotacje są w porządku.

Sądząc po komunikacie o błędzie, jest to błąd kompilatora. Możesz:

  1. Update to the latest JDK version (1.6.0_16-b01).
  2. Zmień układ swoich adnotacji i miej nadzieję, że błąd kompilatora nie zostanie uruchomiony. Tak, to brzmi głupio, ale użyłem obszernych deklaracji @Cache (jak jestem pewien, że zrobiło to wiele innych osób) i nie mam problemów z kompilacją, co oznacza, że ​​masz (nie) szczęście.
  3. Wypróbuj inny kompilator (kompilacja z Eclipse)
  4. Wyślij zgłoszenie błędu do firmy Sun.
2

Cóż .. Mam to do pracy w końcu. Naprawienie tego jest naprawdę dziwne i naprawdę wydaje się być zgłoszonym błędem.

Potrzebowałem również dodać wszystkie biblioteki Hibernate do mojego projektu Netbeans web/war. Kiedy to zrobiłem, błędy zniknęły.

To było dziwne, ponieważ biblioteki Hibernate zostały już uwzględnione w projekcie ucha, który również znajdował się w internetowej bibliotece projektu.

+2

Zważywszy, że należy przyjąć odpowiedź tak, że ta kwestia jest zamknięta. – sharakan

+0

Biorąc pod uwagę to, powinieneś także wspomnieć o brakujących zależnościach w swojej odpowiedzi –

0

Wystarczy dodać słoiki ze stanami hibernacji do projektu WWW/wojny.

0

Rozwiązałem to przez zmianę bibliotek hibernacji z przewidzianych do skompilować w pom z maven wielofunkcyjnego projektu modułu.

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

rozwiąże problemu

+0

Dzięki temu działało – amer