Приветствую!
Столкнулся со странной вещью, есть сущность у которой есть
@ElementCollection
private Map<Param, String> params = new HashMap<>();
Param — это enum.
На H2 базе все ок работе, перевезли на Oracle 12c — падаем на constraint violation
По логу видно что на Н2 базе "хибернейт" делает update таблицы с параметрами, на "оракле" почему-то делается вставка
Как так-то?
PS Hibernate 5.2.14
Здравствуйте, kokaku, Вы писали:
K>Как так-то?
K>PS Hibernate 5.2.14
Переходите на JOOQ
PS: Гибернейтом, по-моему, уже детей пугать можно. 20 лет этому монстру.
Нашел
org.hibernate.collection.internal.PersistentMap
@Override
@SuppressWarnings("unchecked")
public boolean needsInserting(Object entry, int i, Type elemType) throws HibernateException {
final Map sn = (Map) getSnapshot();
final Map.Entry e = (Map.Entry) entry;
return e.getValue() != null && sn.get( e.getKey() ) == null;
}
@Override
@SuppressWarnings("unchecked")
public boolean needsUpdating(Object entry, int i, Type elemType) throws HibernateException {
final Map sn = (Map) getSnapshot();
final Map.Entry e = (Map.Entry) entry;
final Object snValue = sn.get( e.getKey() );
return e.getValue() != null
&& snValue != null
&& elemType.isDirty( snValue, e.getValue(), getSession() );
}