2016-07-20 25 views
1
public class EntityMetaData implements SessionFactoryBuilderFactory { 

    // private static final ThreadLocal<MetadataImplementor> meta = new ThreadLocal<>(); // previously used, but did not work, so used HashMap 

     private static final Map<String, MetadataImplementor> meta = new HashMap<>(); 
     private static final String METADATAKEY = "M"; 

    @Override 
    public SessionFactoryBuilder getSessionFactoryBuilder(MetadataImplementor metadata, SessionFactoryBuilderImplementor defaultBuilder) { 
    // meta.set(metadata); 

     meta.put(METADATAKEY, metadata); 
     return defaultBuilder; 
    } 

    public static MetadataImplementor getMeta() { 
//  return meta.get(); 

     return meta.get(METADATAKEY); 
    } 
} 

Der obige Code in tomcat 8 der lokalen Umgebung, aber in tomcat 8 von Produktionsumgebung nicht funktioniert als getMeta() Methode null zurück funktioniert null ist.Migration von Hibernate 3 bis Hibernate 5: session (MetadataImplementor)

In Lokale Umwelt wird getSessionFactoryBuilder Methode genannt, während Server so die ersten Schritte sind, dass sie in Lokalen funktionieren, aber in Produktionsumgebung getSessionFactoryBuilder Methode nicht so getMeta() kehrt null genannt.

Jede Hilfe könnte geschätzt werden.

Bitte helfen Sie mir dabei.

+0

Bitte jeder kann mir dabei helfen .. Es ist eine "Produktion" Problem. – AppHouze

Antwort

0

Endlich fand ich die Antwort.

Es ist ein kompilierendes Problem. META-INF Ordner ist nicht in classes Ordner, so metadata wird nicht geladen (bedeutet getSessionFactoryBuilder Methode wird nicht aufgerufen) beim Serverstart. In der lokalen Umgebung, META-INF ist es in classes Ordner .. Aber in der Produktionsumgebung ist es nicht verfügbar, so versucht, META-INF kompilieren und in classes Ordner, dann, nachdem es funktioniert.