首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.sql.SQLException:“字段'voc_id‘没有默认值”。使用Spring

java.sql.SQLException:“字段'voc_id‘没有默认值”。使用Spring
EN

Stack Overflow用户
提问于 2021-08-15 14:36:21
回答 1查看 52关注 0票数 0

我试图在一对一的关系中插入Voc,恢复类。

Voc将首先插入,它的pk将进入恢复类,因为它是外键。(它将被用作恢复类的PK )

这是Voc类,它是父类。

代码语言:javascript
运行
复制
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="voc")
public class Voc {
    
    @Id
    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    int id;
    
    @OneToOne(mappedBy="voc", cascade=CascadeType.ALL)
    Recovery recovery;

    // some other variables...
}

这是恢复类,它是子级。

代码语言:javascript
运行
复制
@Data
@Entity
@Table(name="recovery")
public class Recovery {
    
    @Id
    @Column(name="voc_id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    int vocId;
    
    @OneToOne
    @PrimaryKeyJoinColumn(name="voc_id")
    Voc voc;

    // some other variables...
}

我正试着做的第三名。

但是,当我调用JpaRepository的save()方法时,它会抛出错误消息‘字段'voc_id’没有默认值‘。

我遗漏了什么?

或者有比这更好的方法来做我想要的?

EN

回答 1

Stack Overflow用户

发布于 2021-08-15 19:39:58

错误声明“voc_id”没有默认值,也就是说,在创建表时,如果voc_id不是NULL,则不指定默认值。因此,如果代码中有空值被分配给voc_id,它将抛出异常。避免此错误的最佳方法是在create查询中将某些默认值定义为所有非空属性。在您的例子中,您还需要检查为什么要获得空值,因为它是自动生成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68792530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档