我有一个抽象类A
,类B
和C
是A
的子类。类B
具有嵌入字段d
。现在,当我尝试保存B
的实例时,一切都很好。但是,在创建C
的实例并保存它时,我收到错误:
java.sql.SQLException: Field 'string' doesn't have a default value.
例如课程:
public abstract class A {
}
@Embeddable
public class D {
private String string;
}
public class B extends A{
@Embedded
@NotNull
private D d;
}
public class C extends A {
}
答案 0 :(得分:1)
您收到的错误是java.sql.Exception
告诉您:
`Field 'string' doesn't have a default value.`
从我假设您使用MySQL的措辞,以及错误意味着什么,您的string
字段未在插入时填充并声明为非null。如果要在该表中插入记录并将string
列留空,则会收到完全相同的错误。
最终导致问题的原因是您有两个类使用相同的表,为了对象string
而添加了b
列,并且在使用{{ 1}}。