Hibernate не позволяет мне сохранять объект, содержащий нулевой внедренный объект с целым полем. Например, если у меня есть класс под названием Thing, который выглядит так:
@Entity
public class Thing {
@Id
public String id;
public Part part;
}
где Part является вложенным классом, который выглядит следующим образом
@Embeddable
public class Part {
public String a;
public int b;
}
а затем пытается сохранить объект Thing с нулевой частью, вызывает Hibernate, чтобы выбросить исключение. В частности, этот код
Thing th = new Thing();
th.id = "thing.1";
th.part = null;
session.saveOrUpdate(th);
заставляет Hibernate выбрасывать это исключение
org.hibernate.PropertyValueException: not-null property references a null or transient value: com.ace.moab.api.jobs.Thing.part
Я предполагаю, что это происходит потому, что Part является встроенным классом, поэтому Part.a и Part.b являются просто столбцами в таблице базы Thing. Поскольку Thing.part является нулевым, Hibernate хочет установить значения столбца Part.a и Part.b равными null для строки для thing.1. Тем не менее, Part.b является целым числом, а Hibernate не допускает значения целых столбцов в базе данных. Это то, что вызывает исключение, правильно?
Итак, я ищу обходные пути для этой проблемы. Я заметил, что сделать Part.b целым, а не int, кажется, работает, но по причинам, которые я не буду вас беспокоить, это не очень хороший вариант для нас. Спасибо!