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 имеет значение null, Hibernate хочет установить значения столбцов Part.a и Part.b в null для строки для thing.1. Однако Part.b является целым числом, и Hibernate не допустит, чтобы целочисленные столбцы в базе данных были нулевыми. Это то, что вызывает исключение, верно?
Так что я ищу обходные пути для этой проблемы. Я заметил, что создание Part.b целочисленным вместо целого, кажется, работает, но по причинам, которые я не буду утомлять вас этим, не является хорошим вариантом для нас. Спасибо!