Ineffiziente EhCache-Leistung

it diesen JPA-Eigenschaft

props.put( "hibernate.cache.use_query_cache", "true" );
props.put( "hibernate.cache.use_second_level_cache", "true" );
props.put("hibernate.temp.use_jdbc_metadata_defaults", "false");
props.put( "hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory" );
props.put( "javax.persistence.sharedCache.mode", SharedCacheMode.ALL );

Ehcache ist für dieselbe Abfrage nicht effizient.

Problem bezieht sich auf die Funktion namedParameters.hashCode () der QueryCache-Klasse, sie generiert einen anderen HashCode für dieselbe Abfrage!

private int generateHashCode() {
        int result = 13;
        result = 37 * result + ( firstRow==null ? 0 : firstRow.hashCode() );
        result = 37 * result + ( maxRows==null ? 0 : maxRows.hashCode() );
        for ( int i=0; i< positionalParameterValues.length; i++ ) {
            result = 37 * result + ( positionalParameterValues[i]==null ? 0 : positionalParameterTypes[i].getHashCode( positionalParameterValues[i] ) );
        }
        result = 37 * result + ( namedParameters==null ? 0 : namedParameters.hashCode() );
        result = 37 * result + ( filterKeys ==null ? 0 : filterKeys.hashCode() );
        result = 37 * result + ( customTransformer==null ? 0 : customTransformer.hashCode() );
        result = 37 * result + ( tenantIdentifier==null ? 0 : tenantIdentifier.hashCode() );
        result = 37 * result + sqlQueryString.hashCode();
        return result;
}

was mit der Klasse @ zusammenhän

org.hibernate.type.AbstractType 

public int getHashCode(Object x) {
    return x.hashCode();
}

it generiert einen anderen (neuen) hachCode für dasselbe Array-Objekt [01, 1]!

Diese hashCode-Methode sollte für Arrays @ rekursiv se

Antworten auf die Frage(2)

Ihre Antwort auf die Frage