Hi Ich habe Probleme mit dem 2nd Level Cache im Ruhezustand. Als Cache-Provider verwende ich ehcache.
Teil der Konfiguration aus persistence.xml
%Vor%Ich konfiguriere meine Entitäten mithilfe von Annotationen so:
%Vor% Importe für diese Anmerkungen sind:
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
meine ehcache.xml
%Vor%
Und jemand Idee, warum ich folgenden Fehler bekomme?
%Vor%Lösung ist eine weitere Eigenschaft zu persistence.xml hinzuzufügen
%Vor%und das entfernt das fehlerhafte Präfix big thx ruslan!
IMHO, Sie erhalten den Namen der generierten Region für Ihre Klasse. Dieser generierte Name "persistence.unit: unitName = pz2EAR.ear / pz2EJB.jar # pz2EJB.pl.bdsdev.seps.encje.Kierunek". Und es ist nicht in Ihrer ehcache.xml-Konfiguration definiert. Außerdem sucht es nach dem vordefinierten Namen, sodass die Standardregion nicht verwendet werden kann.
Um dieses Problem zu lösen, können Sie @Cache-Annotationseigenschaften verwenden, um einen Regionsnamen wie
vorzudefinieren %Vor%Und in ehcache.xml
%Vor%Hibernate fügt den Cache-Namen ein Präfix basierend auf dem Anwendungsnamen oder dem Wert der Eigenschaft hibernate.cache.region_prefix
hinzuWenn Sie diese Eigenschaft für "" (leere Zeichenfolge) festlegen, haben Sie in hibernate config Regionen, die genau wie name benannt sind.
EHCache benötigt eine Konfiguration, die angibt, wie die Objekte in Ihrer Anwendung zwischengespeichert werden (Live-Zeit, Cache-Typ, Cache-Größe, Cache-Verhalten usw.). Für jede Klasse, die Sie versuchen, zwischenzuspeichern, wird versucht, eine geeignete Cache-Konfiguration zu finden und den obigen Fehler zu drucken, wenn dies nicht der Fall ist.
Siehe Ссылка für die Konfiguration von EHCache.
Tags und Links java hibernate annotations ehcache