我正在尝试围绕连接到Mysql数据库的EJB / JPA创建一个小项目。 我有一个由外键链接的两个表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);
Facade是一种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。 有人可以解释一下我错过了什么?我找不到我的错误。
感谢您的时间。 干杯
答案 0 :(得分:0)
我终于通过删除所有
来实现它@Basic(optional = false)
此外,无需添加cascade = CascadeType.ALL