Я получаю эту ошибку, когда пытаюсь сохранить A class Object
:
Detail: Key (classB)=() is not present in table "b".
Мне нужно иметь возможность вставить объект со значением NULL в указанный столбец.
Проблема в спящем режиме - преобразовать нулевое значение в пустую строку, поэтому при попытке сохранить объект не удается.
Если я поставлю cascade = CascadeType.ALL
на @ManyToOne
, работает, но он создает строку на B table
с ID = 0 и пустой строкой в качестве значения refColName
.Я хочу избежать этого, потому что класс de A является дочерним, и каскад должен быть в классе B.
@Entity
@Table
public class A {
...
@ManyToOne
@JoinColumn(name = "class_b", referencedColumnName = "refColName", nullable = true)
private B classB;
...
}
@Entity
@Table
public class B {
...
@Id
@Column (name = "id")
private long id;
@Column(name = "refColName")
private String refColName;
...
}
Есть предложения?Спасибо за ваше время
Редактировать:
Это однонаправленное отношение, где B - таблица основных данных, поэтому у меня есть предопределенные значения.refColName должно быть строкой.Я использую referencedColumnName, потому что я не могу принять идентификатор в качестве внешнего ключа.