bad insert sql, shardingColumn/joinColumn:ID
时间: 2024-05-09 18:05:00 浏览: 16
I'm sorry, but I cannot provide a response without additional context. Can you please provide more information about the issue you are facing, including the specific SQL statement and any error messages you are receiving?
相关问题
@joincolumn注解
@JoinColumn是一个JPA注解,它用于指定实体类之间的关联关系。它通常用在外键列上,用于指定关联表的列名和外键列的属性。
在JPA中,实体类之间的关联关系可以是一对一、一对多、多对一或多对多。@JoinColumn注解通常在多对一和一对一关系中使用,用于定义外键列的属性名和关联表的列名。通过使用@JoinColumn注解,我们可以指定关联表中的外键列的名称、类型和是否允许为空。
例如,假设我们有两个实体类:一个是Order(订单),另一个是Customer(客户)。我们想要建立一个多对一的关系,即一个客户可以有多个订单。我们可以在Order实体类中使用@JoinColumn注解来指定外键列和关联表的列名,如下所示:
```
@Entity
@Table(name="orders")
public class Order {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="order_name")
private String orderName;
@ManyToOne
@JoinColumn(name="customer_id")
private Customer customer;
//...
}
```
在上面的代码中,@JoinColumn注解指定了外键列的名称为“customer_id”,并且它与Customer实体类的主键列建立关联。这意味着在orders表中,我们将会有一个customer_id列,用于存储Customer实体类的主键值。
总之,@JoinColumn注解是用于定义实体类之间关联关系的重要注解之一,它可以帮助我们指定外键列和关联表的列名,从而实现实体类之间的关联。
@Data @AllArgsConstructor @NoArgsConstructor @Builder @Table(name = "advert") public class Advert { /** * 主键 / @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @ApiModelProperty(value = "广告唯一id") private Integer id; /* * 广告名称 / @ApiModelProperty(value = "广告名称") @NotBlank(message = "广告名称不可为空", groups = {AddGroup.class, UpdateGroup.class}) private String name; /* * 广告位置ID / @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "position_id") private AdPosition position; /* * 广告图片ID / @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "media_id") private MediaFile media; /* * 开始日期 / @Column(name = "start_date") @ApiModelProperty(value = "开始日期") @NotNull(message = "开始日期不可为空", groups = {AddGroup.class}) private Date startDate; /* * 结束日期 / @Column(name = "end_date") @ApiModelProperty(value = "结束日期") @NotNull(message = "结束日期不可为空", groups = {AddGroup.class}) private Date endDate; /* * 广告链接 / @ApiModelProperty(value = "广告链接") @NotBlank(message = "广告链接不可为空", groups = {AddGroup.class}) private String link; /* * 广告状态:0:未启用,1:已启用,2:已结束 / @ApiModelProperty(value = "广告状态") @NotNull(message = "广告状态不可为空", groups = {UpdateGroup.class}) private Integer status; /* * 创建时间 / @Column(name = "create_time") @ApiModelProperty(value = "创建时间") private Date createTime; /* * 更新时间 */ @Column(name = "update_time") @ApiModelProperty(value = "更新时间") private Date updateTime; }如何在使用basemapper的插入时给position和media赋值,正常赋值会报错Cause: java.sql.SQLException: Field 'position_id' doesn't have a default value ; Field 'position_id' doesn't have a default value; nested exception is java.sql.SQLException: Field 'position_id' doesn't have a default value
可以在插入时手动设置position和media的值,例如:
Advert advert = new Advert();
advert.setName("广告名称");
advert.setStartDate(new Date());
advert.setEndDate(new Date());
advert.setLink("广告链接");
advert.setStatus(0);
advert.setPosition(new AdPosition(1)); //手动设置position的值
advert.setMedia(new MediaFile(1)); //手动设置media的值
advertMapper.insert(advert);
其中,1为position和media对应的ID值。这样就可以成功插入数据了。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)