java hibernate4.3.11一对多单向级联只能保存一次,第二次则报错Cannot add or update a child row:

weixin_44537446 2020-08-31 05:30:05
百思不得其解了!
第一次提问,恳请各位大佬帮助一下
场景:一个股票池,可以向里边添加多个股票,,删除股票池那么相关的股票全部自动删除,典型一对多关系,而且还是单向
一方StockPool(为了节约版面,删除了不相关代码)
/*
@Entity
@Table(name = "t_stockpoolding")
public class StockPool implements Serializable {

private int id;
private String name;
private String description;
private Timestamp createDt;
private Set<Stock> stocks = new HashSet<>();

@Id
@GeneratedValue(generator = "_native")
@GenericGenerator(name = "_native", strategy = "native")
public int getId() {
return id;
}


@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "id")//stockpool中该字段为外键,股票表中指向本表的外键名称
public Set<Stock> getStocks() {
return stocks;
}

public void setStocks(Set<Stock> stocks) {
this.stocks = stocks;
}

}

多方 stock(为了节约版面,删除了不相关代码)
/*

@Entity
@Table(name = "t_stockding")
public class Stock implements Serializable {

private int id;
private String stockCode;
private String stockName;

@Id
@GeneratedValue(generator = "_native")
@GenericGenerator(name = "_native", strategy = "native")
public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

}

多方只有一条数据,可以保存,多方有两条及其以上数量
则报
java.sql.SQLIntegrityConstraintViolationException:
Cannot add or update a child row: a foreign key constraint fails
(`networth_ding`.`t_stockding`, CONSTRAINT `FK_pi66wsimny0t01abiw8wm5ql9` FOREIGN KEY (`id`)
REFERENCES `t_stockpoolding` (`id`))

实在无解了
...全文
5726 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44537446 2020-09-03
  • 打赏
  • 举报
回复
感谢指点,搞定了,外键写重复了(多方有同名字段,虽然大小写不一样,但导致无法创建外键),谢谢版主
  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "stockid")

街头小贩 2020-09-01
  • 打赏
  • 举报
回复
AlbumPicture表中的外键:albumId指向Album 的主键
街头小贩 2020-09-01
  • 打赏
  • 举报
回复
同学你的注解是错误的:

@Entity
@Table(name = "apo_album", uniqueConstraints = { @UniqueConstraint(columnNames = {"topicId","memberId"})})
public class Album implements Serializable{
	private static final long serialVersionUID = 3507751881145040347L;
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE)
	private long id;
	private String title;
	//卷的ID
	private int volumesId;
	//版块的ID
	private long boardId;
	//话题的ID
	private long topicId;
	//像册的封面连接地址
	private String coverLink;
	//发布日期
	private LocalDateTime entryDateTime;
	//作者:会员的ID
	private long memberId;
	private String memberNickname;
	//状态
	private boolean status;
	@OneToMany(mappedBy = "album", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
	private List<AlbumPicture> pictures=new ArrayList<>();
}

@Entity
@Table(name = "apo_album_picture")
public class AlbumPicture implements Serializable,Comparable<AlbumPicture>{
	private static final long serialVersionUID = -984105104691136873L;
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE)
	private long id;
	//像册的ID
	@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
	@JoinColumn(name="albumId")
	private Album album;
	//图片的连接地址
	private String link;
	//图片的alt内容
	private String caption;
	//状态
	private boolean status;
	//是否是封面
	private boolean cover;
	//显示的顺序
	private int ranking;
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧