@Override @Transactional(readOnly = false, rollbackFor = Exception.class) public void saveOrUpdate(LevelForUser levelForUser) throws SeqNumAlreadyExistException, MinPointLimitCannotMattchSeqNumException { List<LevelForUser> lfus = ht.loadAll(LevelForUser.class); for (Iterator iterator = lfus.iterator(); iterator.hasNext(); ) { LevelForUser lfu = (LevelForUser) iterator.next(); if (lfu.getId().equals(levelForUser.getId())) { // 如果是修改,则需要先移除相同id的元素,然后添加修改后的 iterator.remove(); } } if (lfus.size() > 0) { lfus.add(levelForUser); // 根据序号升序排序 Collections.sort( lfus, new Comparator<LevelForUser>() { @Override public int compare(LevelForUser o1, LevelForUser o2) { return o1.getSeqNum() - o2.getSeqNum(); } }); // 遍历,判断 for (int i = 0; i <= lfus.size() - 2; i++) { LevelForUser currentLfu = lfus.get(i); LevelForUser nextLfu = lfus.get(i + 1); // 序号不能为空,且序号不能与之前已有的序号相同 if (currentLfu.getSeqNum() == nextLfu.getSeqNum()) { throw new SeqNumAlreadyExistException(); } // 等级积分下线,与等级序号排序是否相同 if (currentLfu.getMinPointLimit() >= nextLfu.getMinPointLimit()) { throw new MinPointLimitCannotMattchSeqNumException(); } } } ht.saveOrUpdate(levelForUser); }
@Transactional(readOnly = false) public void clearStats() { hibernateTemplate.deleteAll(hibernateTemplate.loadAll(Stat.class)); }
/** {@inheritDoc} */ @SuppressWarnings("unchecked") public List<T> getAll() { return hibernateTemplate.loadAll(this.persistentClass); }
@Override public List<Loan> findAllLoan() { return template.loadAll(Loan.class); }
@Override public List<Naryad> findAll() { return ht.loadAll(Naryad.class); }