OpenJPA Insert не использует внешний ключ
Я пытаюсь создать небольшой проект вокруг EJB / JPA, связанный с базой данных Mysql. Я получил две таблицы FctData и RefKpiDataQuery, связанные внешним ключом.
FctData:
public class FctData implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "DATA_ID")
private Long dataId;
...
@JoinColumn(name = "DATA_QUERY_REF", referencedColumnName = "KPI_DATA_QUERY_ID")
@ManyToOne(cascade = CascadeType.ALL)
private RefKpiDataQuery dataQueryRef;
RefKpiDataQuery:
public class RefKpiDataQuery implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "KPI_DATA_QUERY_ID")
private Long kpiDataQueryId;
...
@OneToMany(cascade = CascadeType.ALL, mappedBy = "dataQueryRef")
private Set<FctData> fctDataSet;
У меня есть клиент, который просто пытается вставить FctData в базу данных
RefKpiDataQuery refKpiDataQuery = new RefKpiDataQuery();
refKpiDataQuery.setKpiDataQueryId((long) 2);
FctData fctData = new FctData();
fctData.setDataQueryRef(refKpiDataQuery);
fctDataFacade.insert(fctData);
Фасад является своего рода DAO. Эта вещь прекрасно работает с объектом, который не имеет FK.
Вот ошибка, которую я получаю в своем журнале:
Field 'DATA_QUERY_REF' doesn't have a default value {prepstmnt 7235700 INSERT INTO FCT_DATA(DATA_DATE, DATA_TIME, DATA_VALIDITY, DATA_VALUE, ISACTIVE, UPDATE_OWNER, UPDATE_TS) VALUES (?, ?, ?, ?, ?, ?, ?)
Как мы видим из моей вставки, в ней никогда не говорится о dataQuery. Кто-то может объяснить мне, что я пропустил? Я не могу найти свою ошибку.
Спасибо за ваше время. ура
1 ответ
Решение
Я наконец-то получил работу, удалив все
@Basic(optional = false)
Также нет необходимости добавлять cascade = CascadeType.ALL