Есть (упрощенно) такая схема классов:
@Entity
@Table(name = "my_sub_model")
public class MySubModel {
@Id
@GeneratedValue
@Column
public Long id;
@Version
private Integer version;
@Basic(optional = false)
@Column
public String name;
}
@Entity
@Table(name = "my_model")
public class MyModel {
@Id
@GeneratedValue
@Column
public Long id;
@Version
private Integer version;
@Basic(optional = false)
@OneToOne
@JoinColumn(name = "sub_model_id")
public MySubModel subModel;
}
Связь - один к одному. Но мне важно чтобы MySubModel никогда не менялась (это справочник). Я делаю в DAO:
public void addMyModel(MyModel model) {
em.persist(model);
}
И у меня падает ошибка вида "o.h.e.jdbc.spi.SqlExceptionHelper - Значение NULL не разрешено для поля SUB_MODEL_ID". Вопрос почему так происходит? Все продебажил - у model проинициализировано поле subModel, но у этого поля указан только id - он не NULL 100%, а вот остальные поля NULL (так и должно быть). Как сделать чтобы не было этой ошибки? (только не предлагайте полностью инициализировать subModel - так не должно быть).
Пример модели которая подается в функцию (ее заполненность):
{
"id": null,
"subModel": {
"id": 1,
"name": null
}
}
upd. Уточняю еще раз, ошибка выглядит так:
org.h2.jdbc.JdbcSQLException: Значение NULL не разрешено для поля "SUB_MODEL_ID"
NULL not allowed for column "SUB_MODEL_ID"; SQL statement:
insert into my_model (id, sub_model_id, version) values (null, ?, ?)
Помогите!!!