HHH-7350 read-only entities can not be deleted from 2LC

This commit is contained in:
Strong Liu 2012-05-31 00:53:21 +08:00
parent a203ea65aa
commit fe7a5d74c5
2 changed files with 33 additions and 1 deletions

View File

@ -60,7 +60,7 @@ public class LockTest extends BaseEntityManagerFunctionalTestCase {
Query query = em.createNamedQuery( "getAll" );
query.setLockMode( LockModeType.PESSIMISTIC_READ );
int timeout = ((QueryImpl)(((org.hibernate.ejb.QueryImpl)query).getHibernateQuery())).getLockOptions().getTimeOut();
assertEquals( 3, timeout );
assertEquals( 3000, timeout );
}
@Override

View File

@ -0,0 +1,32 @@
package org.hibernate.cache.infinispan.entity;
import org.hibernate.cache.CacheException;
import org.hibernate.cache.spi.access.SoftLock;
/**
* A specialization of {@link TransactionalAccess} that ensures we never update data. Infinispan
* access is always transactional.
*
* @author Chris Bredesen
* @author Galder Zamarreño
* @since 3.5
*/
class ReadOnlyAccess extends TransactionalAccess {
ReadOnlyAccess(EntityRegionImpl region) {
super(region);
}
@Override
public boolean update(Object key, Object value, Object currentVersion,
Object previousVersion) throws CacheException {
throw new UnsupportedOperationException("Illegal attempt to edit read only item");
}
@Override
public boolean afterUpdate(Object key, Object value, Object currentVersion,
Object previousVersion, SoftLock lock) throws CacheException {
throw new UnsupportedOperationException("Illegal attempt to edit read only item");
}
}