我试图在一对一的关系中插入Voc,恢复类。
Voc将首先插入,它的pk将进入恢复类,因为它是外键。(它将被用作恢复类的PK )
这是Voc类,它是父类。
@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...
}
这是恢复类,它是子级。
@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’没有默认值‘。
我遗漏了什么?
或者有比这更好的方法来做我想要的?
发布于 2021-08-15 19:39:58
错误声明“voc_id”没有默认值,也就是说,在创建表时,如果voc_id不是NULL,则不指定默认值。因此,如果代码中有空值被分配给voc_id,它将抛出异常。避免此错误的最佳方法是在create查询中将某些默认值定义为所有非空属性。在您的例子中,您还需要检查为什么要获得空值,因为它是自动生成的。
https://stackoverflow.com/questions/68792530
复制相似问题