У меня была похожая проблема, и хотя я позаботился о том, чтобы ссылочные объекты были сохранены первыми, он продолжает отказывать с тем же исключением.
После нескольких часов расследования выясняется, что проблема заключалась в том, что столбец «версия» упомянутой сущности имел значение NULL.
В моей конкретной настройке я сначала вставлял его в HSQLDB (это был модульный тест) такую строку:
INSERT INTO project VALUES (1,1,'2013-08-28 13:05:38','2013-08-28 13:05:38','aProject','aa',NULL,'bb','dd','ee','ff','gg','ii',NULL,'LEGACY','0','CREATED',NULL,NULL,1,'0',NULL,NULL,NULL,NULL,'0','0', NULL);
Проблема описанного выше заключается в том, что для столбца версии, используемого hibernate, было задано значение null, поэтому даже если объект был правильно сохранен, Hibernate считал его несохраненным. При проверке того, что версия имеет значение NON-NULL (в данном случае 1), исключение исчезло, и все работало нормально.
Я помещаю это здесь на случай, если у кого-то еще была такая же проблема, так как мне потребовалось много времени, чтобы понять это, и решение полностью отличается от вышеупомянутого.