У меня была та же ошибка, но с другим разрешением. Как и OP, я использую конструктор хеш-кода Apache. Моими объектами являются Родитель и Дитя, имеющие отношения один ко многим. Дочерний элемент включает Родителя в качестве члена, поэтому внешний ключ устанавливается правильно.
Проблема в том, что построитель хэш-кода использует все поля-члены, но когда создается дочерний элемент, его родительский объект еще не завершил загрузку. Когда конструктор хэш-кода ссылается на родительский элемент, Hibernate генерирует исключение, поскольку родительский элемент все еще загружается.
Исправление заключалось в том, чтобы исключить родительскую ссылку из компоновщика хеш-кода в hashCode класса Child и равняется:
@Override
public boolean equals(final Object obj)
{
return EqualsBuilder.reflectionEquals(this, obj, "parent" );
}
@Override
public int hashCode()
{
return HashCodeBuilder.reflectionHashCode(this, "parent" );
}