'无法将值NULL插入列' for Inherited Field

时间:2012-02-09 16:38:23

标签: java inheritance jpa

我在尝试保存Person对象时遇到'无法将NULL值插入列...'错误。据我所知,它被正确设置(打印出值后),但是在save命令中失败了。

无法插入null的字段是来自另一个类的继承字段。

这是我的模特:

public class BaseDomain
{
    ... 

    @Column(name="LST_UPD_PRG") private String lastUpdateProgram;
}

@Entity
@Table(name="PRSN_INF")
public class Person extends BaseDomain
{
    ...

    @Column(name="FRS_NM") private String firstName;
    @Column(name="LST_NM") private String lastName;
}

然后我试图像这样拯救这个人“

public static void main(String[] args)
{
     ... 

     Person person = new Person();

     person.setFirstName("John");
     person.setLastName("Doe");
     person.setLastUpdateProgram("BatchJob_01");

     personRepository.save(person);
}

然后,保存操作会抛出错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert the value NULL into column 'LST_UPD_PRG'...

我最初创建了BaseDomain类,因为数据库中的每个表都有LST_UPD_PRG列。我做遗产的方式有问题吗?

1 个答案:

答案 0 :(得分:2)

我认为你错过了BaseDomain类上的@MappedSuperclass注释。添加该注释有望解决您的问题。

@MappedSuperclass
public class BaseDomain {
...