Java 类org.hibernate.LockMode 实例源码
项目:lams
文件:TwoPhaseLoad.java
/**
* Add an uninitialized instance of an entity class, as a placeholder to ensure object
* identity. Must be called before <tt>postHydrate()</tt>.
*
* Create a "temporary" entry for a newly instantiated entity. The entity is uninitialized,
* but we need the mapping from id to instance in order to guarantee uniqueness.
*
* @param key The entity key
* @param object The entity instance
* @param persister The entity persister
* @param lockMode The lock mode
* @param lazyPropertiesAreUnFetched Are lazy properties still un-fetched?
* @param session The Session
*/
public static void addUninitializedEntity(
final EntityKey key,
final Object object,
final EntityPersister persister,
final LockMode lockMode,
final boolean lazyPropertiesAreUnFetched,
final SessionImplementor session) {
session.getPersistenceContext().addEntity(
object,
Status.LOADING,
null,
key,
null,
lockMode,
true,
persister,
false,
lazyPropertiesAreUnFetched
);
}
项目:lams
文件:TimesTenDialect.java
@Override
public LockingStrategy getLockingStrategy(Lockable lockable, LockMode lockMode) {
// TimesTen has no known variation of a "SELECT ... FOR UPDATE" syntax...
if ( lockMode == LockMode.PESSIMISTIC_FORCE_INCREMENT ) {
return new PessimisticForceIncrementLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.PESSIMISTIC_WRITE ) {
return new PessimisticWriteUpdateLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.PESSIMISTIC_READ ) {
return new PessimisticReadUpdateLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.OPTIMISTIC ) {
return new OptimisticLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.OPTIMISTIC_FORCE_INCREMENT ) {
return new OptimisticForceIncrementLockingStrategy( lockable, lockMode );
}
else if ( lockMode.greaterThan( LockMode.READ ) ) {
return new UpdateLockingStrategy( lockable, lockMode );
}
else {
return new SelectLockingStrategy( lockable, lockMode );
}
}
项目:ctsms
文件:ProbandServiceImpl.java
@Override
protected ProbandAddressOutVO handleDeleteProbandAddress(
AuthenticationVO auth, Long probandAddressId) throws Exception {
ProbandAddressDao addressDao = this.getProbandAddressDao();
ProbandAddress address = CheckIDUtil.checkProbandAddressId(probandAddressId, addressDao);
Proband proband = address.getProband();
this.getProbandDao().lock(proband, LockMode.PESSIMISTIC_WRITE);
// Proband proband = ServiceUtil.checkProbandId(address.getProband().getId(), this.getProbandDao(), LockMode.PESSIMISTIC_WRITE); // address.getProband();
ProbandAddressOutVO result = addressDao.toProbandAddressOutVO(address);
if (!result.isDecrypted()) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.CANNOT_DECRYPT_PROBAND_ADDRESS);
}
ServiceUtil.checkProbandLocked(proband);
if (address.isWireTransfer() && addressDao.getCount(address.getProband().getId(), null, null, null) > 1) { // proband.getAddresses().Xsize() > 1) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.CANNOT_DELETE_WIRE_TRANSFER_PROBAND_ADDRESS);
}
proband.removeAddresses(address);
address.setProband(null);
addressDao.remove(address);
Timestamp now = new Timestamp(System.currentTimeMillis());
User user = CoreUtil.getUser();
ServiceUtil.logSystemMessage(proband, result.getProband(), now, user, SystemMessageCodes.PROBAND_ADDRESS_DELETED, result, null, this.getJournalEntryDao());
return result;
}
项目:lams
文件:HibernateTemplate.java
@Override
public Object get(final String entityName, final Serializable id, final LockMode lockMode)
throws DataAccessException {
return executeWithNativeSession(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException {
if (lockMode != null) {
return session.get(entityName, id, new LockOptions(lockMode));
}
else {
return session.get(entityName, id);
}
}
});
}
项目:ctsms
文件:FileServiceImpl.java
/**
* @see org.phoenixctms.ctsms.service.shared.FileService#updateFile(FileInVO, FileContentInVO)
*/
@Override
protected FileOutVO handleUpdateFile(AuthenticationVO auth, FileInVO modifiedFile, FileContentInVO modifiedFileContent)
throws Exception
{
FileDao fileDao = this.getFileDao();
File originalFile = CheckIDUtil.checkFileId(modifiedFile.getId(), fileDao, LockMode.UPGRADE_NOWAIT);
checkFileInput(modifiedFile);
if (!fileDao.toFileOutVO(originalFile).isDecrypted()) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.CANNOT_DECRYPT_FILE);
}
FileOutVO original = fileDao.toFileOutVO(originalFile);
fileDao.evict(originalFile);
File file = fileDao.fileInVOToEntity(modifiedFile);
Timestamp now = new Timestamp(System.currentTimeMillis());
User user = CoreUtil.getUser();
CoreUtil.modifyVersion(originalFile, file, now, user);
saveFileContent(file, modifiedFileContent);
fileDao.update(file);
return addFileUpdatedJournalEntry(file, original, now, user);
}
项目:lams
文件:HibernateTemplate.java
@Override
public Object get(final String entityName, final Serializable id, final LockMode lockMode)
throws DataAccessException {
return executeWithNativeSession(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException {
if (lockMode != null) {
return session.get(entityName, id, lockMode);
}
else {
return session.get(entityName, id);
}
}
});
}
项目:lams
文件:SQLServerDialect.java
@Override
public String appendLockHint(LockOptions lockOptions, String tableName) {
final LockMode mode = lockOptions.getLockMode();
switch ( mode ) {
case UPGRADE:
case UPGRADE_NOWAIT:
case PESSIMISTIC_WRITE:
case WRITE:
return tableName + " with (updlock, rowlock)";
case PESSIMISTIC_READ:
return tableName + " with (holdlock, rowlock)";
case UPGRADE_SKIPLOCKED:
return tableName + " with (updlock, rowlock, readpast)";
default:
return tableName;
}
}
项目:ctsms
文件:TrialServiceImpl.java
private void checkAddEcrfFieldInput(ECRFFieldInVO ecrfFieldIn) throws ServiceException
{
InputField field = CheckIDUtil.checkInputFieldId(ecrfFieldIn.getFieldId(), this.getInputFieldDao(), LockMode.PESSIMISTIC_WRITE);
Trial trial = CheckIDUtil.checkTrialId(ecrfFieldIn.getTrialId(), this.getTrialDao());
ServiceUtil.checkTrialLocked(trial);
ECRF ecrf = CheckIDUtil.checkEcrfId(ecrfFieldIn.getEcrfId(), this.getECRFDao());
if (!trial.equals(ecrf.getTrial())) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.ECRF_FIELD_WRONG_ECRF, CommonUtil.trialOutVOToString(this.getTrialDao().toTrialOutVO(trial)));
}
checkEcrfFieldInput(ecrfFieldIn);
ServiceUtil.checkLockedEcrfs(ecrf, this.getECRFStatusEntryDao(), this.getECRFDao());
if (ecrfFieldIn.getSeries()
&& this.getECRFFieldDao().getCount(null, ecrfFieldIn.getEcrfId(), ecrfFieldIn.getSection(), null, null) > 0 // optimization, bulk inserts
) {
if (this.getECRFFieldValueDao().getCount(ecrfFieldIn.getEcrfId(), ecrfFieldIn.getSection()) > 0) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.ECRF_FIELD_SERIES_SECTION_WITH_VALUES, ecrfFieldIn.getSection());
}
if (this.getECRFFieldStatusEntryDao().getCount(ecrfFieldIn.getEcrfId(), ecrfFieldIn.getSection()) > 0) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.ECRF_FIELD_SERIES_SECTION_WITH_STATUS_ENTRIES, ecrfFieldIn.getSection());
}
}
}
项目:lams
文件:RDMSOS2200Dialect.java
@Override
public LockingStrategy getLockingStrategy(Lockable lockable, LockMode lockMode) {
// RDMS has no known variation of a "SELECT ... FOR UPDATE" syntax...
if ( lockMode == LockMode.PESSIMISTIC_FORCE_INCREMENT ) {
return new PessimisticForceIncrementLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.PESSIMISTIC_WRITE ) {
return new PessimisticWriteUpdateLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.PESSIMISTIC_READ ) {
return new PessimisticReadUpdateLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.OPTIMISTIC ) {
return new OptimisticLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.OPTIMISTIC_FORCE_INCREMENT ) {
return new OptimisticForceIncrementLockingStrategy( lockable, lockMode );
}
else if ( lockMode.greaterThan( LockMode.READ ) ) {
return new UpdateLockingStrategy( lockable, lockMode );
}
else {
return new SelectLockingStrategy( lockable, lockMode );
}
}
项目:hibernate-ogm-ignite
文件:IgniteDialect.java
@Override
public LockingStrategy getLockingStrategy(Lockable lockable, LockMode lockMode) {
if ( lockMode == LockMode.PESSIMISTIC_FORCE_INCREMENT ) {
return new PessimisticForceIncrementLockingStrategy( lockable, lockMode );
}
// else if ( lockMode==LockMode.PESSIMISTIC_WRITE ) {
// return new PessimisticWriteLockingStrategy( lockable, lockMode );
// }
else if ( lockMode == LockMode.PESSIMISTIC_READ ) {
return new IgnitePessimisticReadLockingStrategy( lockable, lockMode, provider );
}
else if ( lockMode == LockMode.OPTIMISTIC ) {
return new OptimisticLockingStrategy( lockable, lockMode );
}
else if ( lockMode == LockMode.OPTIMISTIC_FORCE_INCREMENT ) {
return new OptimisticForceIncrementLockingStrategy( lockable, lockMode );
}
else {
return null;
}
}
项目:lams
文件:Dialect.java
/**
* Get a strategy instance which knows how to acquire a database-level lock
* of the specified mode for this dialect.
*
* @param lockable The persister for the entity to be locked.
* @param lockMode The type of lock to be acquired.
* @return The appropriate locking strategy.
* @since 3.2
*/
public LockingStrategy getLockingStrategy(Lockable lockable, LockMode lockMode) {
switch ( lockMode ) {
case PESSIMISTIC_FORCE_INCREMENT:
return new PessimisticForceIncrementLockingStrategy( lockable, lockMode );
case PESSIMISTIC_WRITE:
return new PessimisticWriteSelectLockingStrategy( lockable, lockMode );
case PESSIMISTIC_READ:
return new PessimisticReadSelectLockingStrategy( lockable, lockMode );
case OPTIMISTIC:
return new OptimisticLockingStrategy( lockable, lockMode );
case OPTIMISTIC_FORCE_INCREMENT:
return new OptimisticForceIncrementLockingStrategy( lockable, lockMode );
default:
return new SelectLockingStrategy( lockable, lockMode );
}
}
项目:ctsms
文件:StaffServiceImpl.java
/**
* @see org.phoenixctms.ctsms.service.staff.StaffService#updateStaff(StaffInVO)
*/
@Override
protected StaffOutVO handleUpdateStaff(AuthenticationVO auth, StaffInVO modifiedStaff, Integer maxInstances, Integer maxParentDepth)
throws Exception
{
StaffDao staffDao = this.getStaffDao();
Staff originalStaff = CheckIDUtil.checkStaffId(modifiedStaff.getId(), staffDao, LockMode.PESSIMISTIC_WRITE);
checkStaffInput(modifiedStaff);
if (originalStaff.isPerson() != modifiedStaff.isPerson()) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.STAFF_PERSON_FLAG_CHANGED);
}
StaffOutVO original = staffDao.toStaffOutVO(originalStaff, maxInstances, maxParentDepth);
staffDao.evict(originalStaff);
Staff staff = staffDao.staffInVOToEntity(modifiedStaff);
checkStaffLoop(staff);
Timestamp now = new Timestamp(System.currentTimeMillis());
User user = CoreUtil.getUser();
CoreUtil.modifyVersion(originalStaff, staff, now, user);
staffDao.update(staff);
StaffOutVO result = staffDao.toStaffOutVO(staff, maxInstances, maxParentDepth);
JournalEntryDao journalEntryDao = this.getJournalEntryDao();
logSystemMessage(staff, result, now, user, SystemMessageCodes.STAFF_UPDATED, result, original, journalEntryDao);
return result;
}
项目:ctsms
文件:TrialServiceImpl.java
@Override
protected ECRFStatusEntryVO handleSetEcrfStatusEntry(AuthenticationVO auth, Long ecrfId, Long probandListEntryId, Long version, Long ecrfStatusTypeId,
Long probandListStatusTypeId)
throws Exception {
ProbandListEntry listEntry = CheckIDUtil.checkProbandListEntryId(probandListEntryId, this.getProbandListEntryDao(), LockMode.PESSIMISTIC_WRITE);
ECRF ecrf = CheckIDUtil.checkEcrfId(ecrfId, this.getECRFDao(), LockMode.PESSIMISTIC_WRITE); // lock order, field updates
ECRFStatusType statusType = CheckIDUtil.checkEcrfStatusTypeId(ecrfStatusTypeId, this.getECRFStatusTypeDao());
Timestamp now = new Timestamp(System.currentTimeMillis());
User user = CoreUtil.getUser();
ECRFStatusEntry originalStatusEntry = this.getECRFStatusEntryDao().findByEcrfListEntry(ecrf.getId(), listEntry.getId());
ECRFStatusEntryVO result;
if (originalStatusEntry != null) {
result = updateEcrfStatusEntry(originalStatusEntry, ecrf, listEntry, statusType, version, probandListStatusTypeId, now, user);
} else {
Object[] resultItems = addEcrfStatusEntry(ecrf, listEntry, statusType, probandListStatusTypeId, now, user);
result = (ECRFStatusEntryVO) resultItems[1];
}
return result;
}
项目:lams
文件:FrontBaseDialect.java
@Override
public LockingStrategy getLockingStrategy(Lockable lockable, LockMode lockMode) {
// Frontbase has no known variation of a "SELECT ... FOR UPDATE" syntax...
if ( lockMode==LockMode.PESSIMISTIC_FORCE_INCREMENT) {
return new PessimisticForceIncrementLockingStrategy( lockable, lockMode);
}
else if ( lockMode==LockMode.PESSIMISTIC_WRITE) {
return new PessimisticWriteUpdateLockingStrategy( lockable, lockMode);
}
else if ( lockMode==LockMode.PESSIMISTIC_READ) {
return new PessimisticReadUpdateLockingStrategy( lockable, lockMode);
}
else if ( lockMode==LockMode.OPTIMISTIC) {
return new OptimisticLockingStrategy( lockable, lockMode);
}
else if ( lockMode==LockMode.OPTIMISTIC_FORCE_INCREMENT) {
return new OptimisticForceIncrementLockingStrategy( lockable, lockMode);
}
else if ( lockMode.greaterThan( LockMode.READ ) ) {
return new UpdateLockingStrategy( lockable, lockMode );
}
else {
return new SelectLockingStrategy( lockable, lockMode );
}
}
项目:ctsms
文件:TrialServiceImpl.java
@Override
protected TrialOutVO handleUpdateTrial(AuthenticationVO auth, TrialInVO modifiedTrial)
throws Exception {
TrialDao trialDao = this.getTrialDao();
Trial originalTrial = CheckIDUtil.checkTrialId(modifiedTrial.getId(), trialDao, LockMode.PESSIMISTIC_WRITE);
Timestamp now = new Timestamp(System.currentTimeMillis());
User user = CoreUtil.getUser();
checkUpdateTrialInput(originalTrial, modifiedTrial, user);
TrialStatusType originalTrialStatusType = originalTrial.getStatus();
TrialOutVO original = trialDao.toTrialOutVO(originalTrial);
this.getTrialStatusTypeDao().evict(originalTrialStatusType);
trialDao.evict(originalTrial);
Trial trial = trialDao.trialInVOToEntity(modifiedTrial);
// Timestamp now = new Timestamp(System.currentTimeMillis());
// User user = CoreUtil.getUser();
CoreUtil.modifyVersion(originalTrial, trial, now, user);
trialDao.update(trial);
execTrialStatusActions(originalTrialStatusType, trial, now, user);
TrialOutVO result = trialDao.toTrialOutVO(trial);
ServiceUtil.logSystemMessage(trial, result, now, user, SystemMessageCodes.TRIAL_UPDATED, result, original, this.getJournalEntryDao());
return result;
}
项目:lams
文件:EntityEntry.java
/**
* Handle updating the internal state of the entry after actually performing
* the database update. Specifically we update the snapshot information and
* escalate the lock mode
*
* @param entity The entity instance
* @param updatedState The state calculated after the update (becomes the
* new {@link #getLoadedState() loaded state}.
* @param nextVersion The new version.
*/
public void postUpdate(Object entity, Object[] updatedState, Object nextVersion) {
this.loadedState = updatedState;
setLockMode( LockMode.WRITE );
if ( getPersister().isVersioned() ) {
this.version = nextVersion;
getPersister().setPropertyValue( entity, getPersister().getVersionProperty(), nextVersion );
}
if ( getPersister().getInstrumentationMetadata().isInstrumented() ) {
final FieldInterceptor interceptor = getPersister().getInstrumentationMetadata().extractInterceptor( entity );
if ( interceptor != null ) {
interceptor.clearDirty();
}
}
if( entity instanceof SelfDirtinessTracker) {
((SelfDirtinessTracker) entity).$$_hibernate_clearDirtyAttributes();
}
persistenceContext.getSession()
.getFactory()
.getCustomEntityDirtinessStrategy()
.resetDirty( entity, getPersister(), (Session) persistenceContext.getSession() );
}
项目:ctsms
文件:FileServiceImpl.java
/**
* @see org.phoenixctms.ctsms.service.shared.FileService#updateFile(FileInVO)
*/
@Override
protected FileOutVO handleUpdateFile(AuthenticationVO auth, FileInVO modifiedFile)
throws Exception
{
FileDao fileDao = this.getFileDao();
File originalFile = CheckIDUtil.checkFileId(modifiedFile.getId(), fileDao, LockMode.UPGRADE_NOWAIT);
checkFileInput(modifiedFile);
if (!fileDao.toFileOutVO(originalFile).isDecrypted()) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.CANNOT_DECRYPT_FILE);
}
FileOutVO original = fileDao.toFileOutVO(originalFile);
fileDao.evict(originalFile);
File file = fileDao.fileInVOToEntity(modifiedFile);
Timestamp now = new Timestamp(System.currentTimeMillis());
User user = CoreUtil.getUser();
CoreUtil.modifyVersion(originalFile, file, now, user);
fileDao.update(file);
return addFileUpdatedJournalEntry(file, original, now, user);
}
项目:lams
文件:Loader.java
protected boolean shouldUseFollowOnLocking(
QueryParameters parameters,
Dialect dialect,
List<AfterLoadAction> afterLoadActions) {
if ( dialect.useFollowOnLocking() ) {
// currently only one lock mode is allowed in follow-on locking
final LockMode lockMode = determineFollowOnLockMode( parameters.getLockOptions() );
final LockOptions lockOptions = new LockOptions( lockMode );
if ( lockOptions.getLockMode() != LockMode.UPGRADE_SKIPLOCKED ) {
LOG.usingFollowOnLocking();
lockOptions.setTimeOut( parameters.getLockOptions().getTimeOut() );
lockOptions.setScope( parameters.getLockOptions().getScope() );
afterLoadActions.add(
new AfterLoadAction() {
@Override
public void afterLoad(SessionImplementor session, Object entity, Loadable persister) {
( (Session) session ).buildLockRequest( lockOptions ).lock( persister.getEntityName(), entity );
}
}
);
parameters.setLockOptions( new LockOptions() );
return true;
}
}
return false;
}
项目:lams
文件:AbstractEntityGraphVisitationStrategy.java
protected FetchStrategy adjustJoinFetchIfNeeded(
AssociationAttributeDefinition attributeDefinition, FetchStrategy fetchStrategy) {
if ( lockMode.greaterThan( LockMode.READ ) ) {
return new FetchStrategy( fetchStrategy.getTiming(), FetchStyle.SELECT );
}
final Integer maxFetchDepth = sessionFactory().getSettings().getMaximumFetchDepth();
if ( maxFetchDepth != null && currentDepth() > maxFetchDepth ) {
return new FetchStrategy( fetchStrategy.getTiming(), FetchStyle.SELECT );
}
if ( attributeDefinition.getType().isCollectionType() && isTooManyCollections() ) {
// todo : have this revert to batch or subselect fetching once "sql gen redesign" is in place
return new FetchStrategy( fetchStrategy.getTiming(), FetchStyle.SELECT );
}
return fetchStrategy;
}
项目:lams
文件:PessimisticWriteUpdateLockingStrategy.java
/**
* Construct a locking strategy based on SQL UPDATE statements.
*
* @param lockable The metadata for the entity to be locked.
* @param lockMode Indicates the type of lock to be acquired. Note that read-locks are not valid for this strategy.
*/
public PessimisticWriteUpdateLockingStrategy(Lockable lockable, LockMode lockMode) {
this.lockable = lockable;
this.lockMode = lockMode;
if ( lockMode.lessThan( LockMode.PESSIMISTIC_READ ) ) {
throw new HibernateException( "[" + lockMode + "] not valid for update statement" );
}
if ( !lockable.isVersioned() ) {
LOG.writeLocksNotSupported( lockable.getEntityName() );
this.sql = null;
}
else {
this.sql = generateLockString();
}
}
项目:OpenDiabetes
文件:HSQLDialect.java
public void lock(Serializable id, Object version, Object object, SessionImplementor session)
throws StaleObjectStateException, JDBCException {
if ( getLockMode().greaterThan( LockMode.READ ) ) {
log.warn( "HSQLDB supports only READ_UNCOMMITTED isolation" );
}
super.lock( id, version, object, session );
}
项目:lemon
文件:DatabaseSequenceHelper.java
@Transactional
public String process(String code, Date date) {
if (code == null) {
throw new IllegalArgumentException("code is null");
}
if (date == null) {
throw new IllegalArgumentException("date is null");
}
code = code.trim().toUpperCase();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date targetDate = calendar.getTime();
String hql = "from SequenceInfo where code=?";
Query query = sequenceInfoManager.createQuery(hql, code);
query.setLockMode("SequenceInfo", LockMode.WRITE);
SequenceInfo sequenceInfo = (SequenceInfo) query.setFirstResult(0)
.setMaxResults(1).uniqueResult();
int sequence = 0;
if (sequenceInfo == null) {
sequenceInfo = new SequenceInfo();
sequenceInfo.setCode(code);
sequenceInfo.setValue(1);
sequenceInfo.setUpdateDate(targetDate);
} else {
Date updateDate = sequenceInfo.getUpdateDate();
if (updateDate == null) {
sequenceInfo.setUpdateDate(targetDate);
sequenceInfo.setValue(1);
} else if (updateDate.before(targetDate)) {
sequenceInfo.setUpdateDate(targetDate);
sequenceInfo.setValue(1);
} else {
sequenceInfo.setValue(sequenceInfo.getValue() + 1);
}
}
sequenceInfoManager.save(sequenceInfo);
sequence = sequenceInfo.getValue();
if (sequence >= 100000) {
throw new IllegalStateException(sequence
+ " is larger than 100000, cannot process it.");
}
// sequence += 100000;
// String code = Integer.toString(sequence).substring(1);
// return code;
return Integer.toString(sequence);
}
项目:ctsms
文件:TrialServiceImpl.java
private void checkUpdateInquiryInput(Inquiry originalInquiry, InquiryInVO inquiryIn) throws ServiceException
{
InputField field = CheckIDUtil.checkInputFieldId(inquiryIn.getFieldId(), this.getInputFieldDao(), LockMode.PESSIMISTIC_WRITE);
Trial trial = CheckIDUtil.checkTrialId(inquiryIn.getTrialId(), this.getTrialDao());
if (!trial.equals(originalInquiry.getTrial())) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.INQUIRY_TRIAL_CHANGED);
}
ServiceUtil.checkTrialLocked(trial);
checkInquiryInput(inquiryIn);
if (!field.equals(originalInquiry.getField()) && this.getInquiryValueDao().getCount(originalInquiry.getId()) > 0) { // originalInquiry.getInquiryValues().Xsize() > 0) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.INQUIRY_INPUT_FIELD_CHANGED);
}
}
项目:ipf-flow-manager
文件:FlowRepositoryImpl.java
@Override
public Flow lock(Long id) {
try {
return getHibernateTemplate().load(Flow.class, id, LockMode.UPGRADE);
} catch (HibernateObjectRetrievalFailureException e) {
throw new FlowException("no flow with id " + id);
}
}
项目:lams
文件:Util.java
/**
* Resolve the given result classes
*
* @param context The context for the resolution. See {@link ResultSetMappingResolutionContext}
* @param resultClasses The Classes to which the results should be mapped
*/
public static void resolveResultClasses(ResultClassesResolutionContext context, Class... resultClasses) {
int i = 0;
for ( Class resultClass : resultClasses ) {
context.addQueryReturns(
new NativeSQLQueryRootReturn( "alias" + (++i), resultClass.getName(), LockMode.READ )
);
try {
final EntityPersister persister = context.getSessionFactory().getEntityPersister( resultClass.getName() );
context.addQuerySpaces( (String[]) persister.getQuerySpaces() );
}
catch (Exception ignore) {
}
}
}
项目:lams
文件:HibernateTemplate.java
@Override
public void lock(final String entityName, final Object entity, final LockMode lockMode)
throws DataAccessException {
executeWithNativeSession(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException {
session.buildLockRequest(new LockOptions(lockMode)).lock(entityName, entity);
return null;
}
});
}
项目:ctsms
文件:CheckIDUtil.java
public static Trial checkTrialId(Long trialId, TrialDao trialDao, LockMode lockMode) throws ServiceException
{
Trial trial = trialDao.load(trialId, lockMode);
if (trial == null) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.INVALID_TRIAL_ID, trialId == null ? null : trialId.toString());
}
return trial;
}
项目:ctsms
文件:FileServiceImpl.java
/**
* @see org.phoenixctms.ctsms.service.shared.FileService#updateFile(FileInVO, FileStreamInVO)
*/
@Override
protected FileOutVO handleUpdateFile(AuthenticationVO auth, FileInVO modifiedFile, FileStreamInVO modifiedFileStream)
throws Exception
{
FileDao fileDao = this.getFileDao();
File originalFile = CheckIDUtil.checkFileId(modifiedFile.getId(), fileDao, LockMode.UPGRADE_NOWAIT);
checkFileInput(modifiedFile);
if (!fileDao.toFileOutVO(originalFile).isDecrypted()) {
throw L10nUtil.initServiceException(ServiceExceptionCodes.CANNOT_DECRYPT_FILE);
}
checkFileInput(modifiedFileStream, modifiedFile.getModule());
FileOutVO original = fileDao.toFileOutVO(originalFile);
fileDao.evict(originalFile);
File file = fileDao.fileInVOToEntity(modifiedFile);
Timestamp now = new Timestamp(System.currentTimeMillis());
User user = CoreUtil.getUser();
CoreUtil.modifyVersion(originalFile, file, now, user);
saveFileStream(file, modifiedFileStream);
try {
fileDao.update(file);
return addFileUpdatedJournalEntry(file, original, now, user);
} catch (Exception e) {
try {
dropExternalFile(true, file.getExternalFileName());
} catch (Exception e1) {
}
throw e;
}
}
项目:lams
文件:NativeSQLQueryJoinReturn.java
/**
* Construct a return descriptor representing some form of fetch.
*
* @param alias The result alias
* @param ownerAlias The owner's result alias
* @param ownerProperty The owner's property representing the thing to be fetched
* @param propertyResults Any user-supplied column->property mappings
* @param lockMode The lock mode to apply
*/
@SuppressWarnings("unchecked")
public NativeSQLQueryJoinReturn(
String alias,
String ownerAlias,
String ownerProperty,
Map propertyResults,
LockMode lockMode) {
super( alias, propertyResults, lockMode );
this.ownerAlias = ownerAlias;
this.ownerProperty = ownerProperty;
this.hashCode = determineHashCode();
}
项目:lams
文件:TwoPhaseLoad.java
/**
* Register the "hydrated" state of an entity instance, after the first step of 2-phase loading.
*
* Add the "hydrated state" (an array) of an uninitialized entity to the session. We don't try
* to resolve any associations yet, because there might be other entities waiting to be
* read from the JDBC result set we are currently processing
*
* @param persister The persister for the hydrated entity
* @param id The entity identifier
* @param values The entity values
* @param rowId The rowId for the entity
* @param object An optional instance for the entity being loaded
* @param lockMode The lock mode
* @param lazyPropertiesAreUnFetched Whether properties defined as lazy are yet un-fetched
* @param session The Session
*/
public static void postHydrate(
final EntityPersister persister,
final Serializable id,
final Object[] values,
final Object rowId,
final Object object,
final LockMode lockMode,
final boolean lazyPropertiesAreUnFetched,
final SessionImplementor session) {
final Object version = Versioning.getVersion( values, persister );
session.getPersistenceContext().addEntry(
object,
Status.LOADING,
values,
rowId,
id,
version,
lockMode,
true,
persister,
false,
lazyPropertiesAreUnFetched
);
if ( version != null && LOG.isTraceEnabled() ) {
final String versionStr = persister.isVersioned()
? persister.getVersionType().toLoggableString( version, session.getFactory() )
: "null";
LOG.tracef( "Version: %s", versionStr );
}
}
项目:ctsms
文件:TrialServiceImpl.java
private void checkAddProbandListEntryTagInput(ProbandListEntryTagInVO listTagIn) throws ServiceException
{
InputField field = CheckIDUtil.checkInputFieldId(listTagIn.getFieldId(), this.getInputFieldDao(), LockMode.PESSIMISTIC_WRITE);
Trial trial = CheckIDUtil.checkTrialId(listTagIn.getTrialId(), this.getTrialDao());
ServiceUtil.checkTrialLocked(trial);
checkProbandListEntryTagInput(listTagIn);
}
项目:lams
文件:DynamicBatchingEntityLoaderBuilder.java
@Override
protected UniqueEntityLoader buildBatchingLoader(
OuterJoinLoadable persister,
int batchSize,
LockMode lockMode,
SessionFactoryImplementor factory,
LoadQueryInfluencers influencers) {
return new DynamicBatchingEntityLoader( persister, batchSize, lockMode, factory, influencers );
}
项目:lams
文件:DynamicBatchingEntityLoaderBuilder.java
public DynamicBatchingEntityLoader(
OuterJoinLoadable persister,
int maxBatchSize,
LockMode lockMode,
SessionFactoryImplementor factory,
LoadQueryInfluencers loadQueryInfluencers) {
super( persister );
this.maxBatchSize = maxBatchSize;
this.singleKeyLoader = new EntityLoader( persister, 1, lockMode, factory, loadQueryInfluencers );
this.dynamicLoader = new DynamicEntityLoader( persister, maxBatchSize, lockMode, factory, loadQueryInfluencers );
}
项目:ctsms
文件:InventoryBookingCollisionFinder.java
@Override
protected Inventory aquireWriteLock(InventoryBookingInVO in, boolean lock)
throws ServiceException {
if (in.getInventoryId() != null) {
if (lock) {
return CheckIDUtil.checkInventoryId(in.getInventoryId(), inventoryDao, LockMode.PESSIMISTIC_WRITE);
} else {
return CheckIDUtil.checkInventoryId(in.getInventoryId(), inventoryDao);
}
}
return null;
}
项目:lams
文件:CollectionElementLoader.java
public CollectionElementLoader(
QueryableCollection collectionPersister,
SessionFactoryImplementor factory,
LoadQueryInfluencers loadQueryInfluencers) throws MappingException {
super( factory, loadQueryInfluencers );
this.keyType = collectionPersister.getKeyType();
this.indexType = collectionPersister.getIndexType();
this.persister = (OuterJoinLoadable) collectionPersister.getElementPersister();
this.entityName = persister.getEntityName();
JoinWalker walker = new EntityJoinWalker(
persister,
ArrayHelper.join(
collectionPersister.getKeyColumnNames(),
collectionPersister.toColumns("index")
),
1,
LockMode.NONE,
factory,
loadQueryInfluencers
);
initFromWalker( walker );
postInstantiate();
if ( LOG.isDebugEnabled() ) {
LOG.debugf( "Static select for entity %s: %s", entityName, getSQLString() );
}
}
项目:lams
文件:AbstractBatchingEntityLoaderBuilder.java
@Override
protected UniqueEntityLoader buildNonBatchingLoader(
OuterJoinLoadable persister,
LockMode lockMode,
SessionFactoryImplementor factory,
LoadQueryInfluencers influencers) {
return EntityLoader.forEntity( persister ).withLockMode( lockMode ).withInfluencers( influencers ).byPrimaryKey();
}
项目:dev-courses
文件:HSQLDialect.java
public void lock(Serializable id, Object version, Object object, int timeout, SessionImplementor session)
throws StaleObjectStateException, JDBCException {
if ( getLockMode().greaterThan( LockMode.READ ) ) {
log.warn( "HSQLDB supports only READ_UNCOMMITTED isolation" );
}
super.lock( id, version, object, timeout, session );
}
项目:lams
文件:AbstractEntityPersister.java
protected void initLockers() {
lockers.put( LockMode.READ, generateLocker( LockMode.READ ) );
lockers.put( LockMode.UPGRADE, generateLocker( LockMode.UPGRADE ) );
lockers.put( LockMode.UPGRADE_NOWAIT, generateLocker( LockMode.UPGRADE_NOWAIT ) );
lockers.put( LockMode.UPGRADE_SKIPLOCKED, generateLocker( LockMode.UPGRADE_SKIPLOCKED ) );
lockers.put( LockMode.FORCE, generateLocker( LockMode.FORCE ) );
lockers.put( LockMode.PESSIMISTIC_READ, generateLocker( LockMode.PESSIMISTIC_READ ) );
lockers.put( LockMode.PESSIMISTIC_WRITE, generateLocker( LockMode.PESSIMISTIC_WRITE ) );
lockers.put( LockMode.PESSIMISTIC_FORCE_INCREMENT, generateLocker( LockMode.PESSIMISTIC_FORCE_INCREMENT ) );
lockers.put( LockMode.OPTIMISTIC, generateLocker( LockMode.OPTIMISTIC ) );
lockers.put( LockMode.OPTIMISTIC_FORCE_INCREMENT, generateLocker( LockMode.OPTIMISTIC_FORCE_INCREMENT ) );
}
项目:lams
文件:ResultSetProcessingContextImpl.java
@Override
public LockMode resolveLockMode(EntityReference entityReference) {
if ( queryParameters.getLockOptions() != null && queryParameters.getLockOptions()
.getLockMode() != null ) {
return queryParameters.getLockOptions().getLockMode();
}
return LockMode.READ;
}
项目:lams
文件:LoadEvent.java
private LoadEvent(
Serializable entityId,
String entityClassName,
Object instanceToLoad,
LockOptions lockOptions,
boolean isAssociationFetch,
EventSource source) {
super(source);
if ( entityId == null ) {
throw new IllegalArgumentException("id to load is required for loading");
}
if ( lockOptions.getLockMode() == LockMode.WRITE ) {
throw new IllegalArgumentException("Invalid lock mode for loading");
}
else if ( lockOptions.getLockMode() == null ) {
lockOptions.setLockMode(DEFAULT_LOCK_MODE);
}
this.entityId = entityId;
this.entityClassName = entityClassName;
this.instanceToLoad = instanceToLoad;
this.lockOptions = lockOptions;
this.isAssociationFetch = isAssociationFetch;
}