0
나는 그런 서비스가 있습니다일괄 처리를 실행하는 예외입니다. 봄 응용 프로그램
@Service
public class UserEventServiceImpl implements UserEventService {
@Autowired
UserEventDao userEventDao;
@Override
public UserEvent getOrCreateUserEvent(String guid) {
return userEventDao.getOrCreateUserEvent(guid);
}
@Override
public void updateUserEvent(UserEvent userEvent) {
userEventDao.update(userEvent);
}
@Override
public void processEventType(String guid, EventType type) {
UserEvent userEvent = getOrCreateUserEvent(guid);
switch (type) {
case DOWNLOAD_STARTED: {
userEvent.setDownloadInstallStarted(new Date());
updateUserEvent(userEvent);
break;
}
case DOWNLOAD_COMPLETE: {
userEvent.setDownloadInstallCompleted(new Date());
updateUserEvent(userEvent);
break;
}
case UPDATE_DOWNLOAD_STARTED: {
userEvent.setDownloadUpdateStarted(new Date());
updateUserEvent(userEvent);
break;
}
case UPDATE_DOWNLOAD_FINISHED: {
userEvent.setDownloadUpdateCompleted(new Date());
updateUserEvent(userEvent);
break;
}
case UPDATE_COMPLETE: {
userEvent.setUpdateCompleted(true);
updateUserEvent(userEvent);
break;
}
}
}
}
및 DAO 클래스 :
@Repository
public class UserEventDaoHb extends BaseDaoHb<UserEvent> implements UserEventDao {
public UserEventDaoHb() {
super(UserEvent.class);
}
@Override
public UserEvent getOrCreateUserEvent(String guid) {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
try {
date = formatter.parse(formatter.format(date));
} catch (ParseException e) {
//do nothing. Impossible to happen
}
UserEvent event = findOneByParams(Restrictions.eq("guid", guid), Restrictions.eq("date", date));
if (event == null) {
event = new UserEvent();
event.setGuid(guid);
event.setDate(date);
getHibernateTemplate().save(event);
getHibernateTemplate().flush();
}
return event;
}
}
UserEvent에 간단한 POJO 객체입니다. 이 코드는 로컬 및 테스트 서버에서 완벽하게 작동하지만 내가 생산에 그것을 실행할 때 같은 예외가 발생합니다
오류를 [HTTP 4 월-8080-간부-55] - 2014년 6월 20일 7시 27분 : 14 - (BatchingBatcher.java:73) - 예외 실행 일괄 처리 : org.hibernate.StaleStateException : 일괄 업데이트가 update [0]의 예기치 않은 행 수를 반환했습니다. 실제 행 수 : 0; 예상 : 1
제가 알기로 UserEvent는 업데이트가 있어야 할 때 DB에 아직 존재하지 않기 때문에 발생합니다. 해결 방법이 있습니까?