hello to all.
I'm was using mysql 5 + hibernate 3.2.4sp1 + spring 2.0.6
no problem
the problem is when i switched my db to mysql 4.1
i my changed dialect to
and one of my code stops workingCode:hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
test case
serviceCode:@Test public void testRegisterValidMailButTooLong() { assertEquals(0, userCount()); final User user = new User(); user.setName("name"); user.setMail(StringUtils.repeat("X", 1024) + "@aol.com"); assertEquals(0, userCount()); boolean register = userService.registerUser(user); assertEquals(false, register); assertEquals(0, userCount()); }
and daoCode:@Transactional public boolean registerUser(final User user) { boolean result; final String rawPass = user.getPassword(); final String encoded = passwordEncoder.encodePassword(rawPass, null); user.setPassword(encoded); user.setRegistrationDate(new Date()); try { userDAO.add(user); result = true; } catch (DataIntegrityViolationException e) { log.error(e); result = false; } catch (DataAccessException e) { log.error(e); result = false; } return result; }
Code:try { final Serializable id = session.save(object); session.flush(); return id; } catch (InvalidStateException e) { session.clear(); session.flush(); throw new DataIntegrityViolationException("failed validation", e); } catch (HibernateException e) { session.clear(); session.flush(); throw e; }
i've debugged and stepped over the code
the insert operation does not happen until after the service code has exited.
but the insert operation should already be cleared.
note: this happens as expected (no records inserted) on MySQL 5, but the record gets inserted (despite being truncated), on MySQL 4.1
any help?


Reply With Quote