Почему возникает ошибка при сохранении?

0
10 авг 2017 04:26
Есть приложение Spring+Hibernate. В нем есть (упрощенно) такая схема классов:

@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(myModel);
}


И у меня падает ошибка вида "o.h.e.jdbc.spi.SqlExceptionHelper - Значение NULL не разрешено для поля SUB_MODEL_ID". Вопрос почему так происходит? Все продебажил - у model проинициализировано поле subModel, но у этого поля указан только id - он не NULL 100%, а вот остальные поля NULL (так и должно быть). Как сделать чтобы не было этой ошибки? (только не предлагайте полностью инициализировать subModel - так не должно быть).

Пример модели которая подается в функцию (ее заполненность):

{
  "id": null,
  "subModel": {
    "id": 1,
    "name": null
  }
}
Модераторы: Нет
Сейчас эту тему просматривают: Нет