You mean the stats aren't being updated... Yes, that does look like an
oversight.
On Fri 30 Mar 2012 09:01:36 AM CDT, Galder ZamarreƱo wrote:
Hi guys,
I think there's a bug in the Natural ID support impl in Hibernate and wanted to
confirm with you:
For entity caching, EntityInsertAction does:
boolean put = persister.getCacheAccessStrategy().insert( ck, cacheEntry, version );
if ( put&& factory.getStatistics().isStatisticsEnabled() ) {
factory.getStatisticsImplementor().secondLevelCachePut(
getPersister().getCacheAccessStrategy().getRegion().getName() );
}
But for natural id caching, insert() return is ignored and only afterInsert()'s
result is taken into accound:
NaturalIdXrefDelegate:
case INSERT: {
naturalIdCacheAccessStrategy.insert( naturalIdCacheKey, pk );
( (EventSource) session() ).getActionQueue().registerProcess(
new AfterTransactionCompletionProcess() {
@Override
public void doAfterTransactionCompletion(boolean success, SessionImplementor session) {
final boolean put = naturalIdCacheAccessStrategy.afterInsert( naturalIdCacheKey, pk );
if ( put&& justAddedToLocalCache&&
factory.getStatistics().isStatisticsEnabled() ) {
factory.getStatisticsImplementor().naturalIdCachePut(
naturalIdCacheAccessStrategy.getRegion().getName() );
> From what I've understood, both natural id caching and entity caching should
behave in the same way.
Infinispan does not implement afterInsert() because it's not an asynchornous caching
strategy, so natural id cache puts on insert are not currently being updated.
Cheers,
--
Galder ZamarreƱo
Sr. Software Engineer
Infinispan, JBoss Cache
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev