有一个PO类,用注解OneToMany注解了单向一对多关系,新建表的时候是没有问题的
但是发现在多方的那张表中多出来的外键那一列的值全都是null,也就是说在新建Board的时候并没有维护关系。
查看一些资料发现用mappedby指定维护关系的一方,可是mappedby和JoinColumn是互斥的,没法同时写,感觉很疑惑。这个单向一对多关系到底应该怎么写才能在保存Board记录的时候让StockName2Code的外键也同时更新呢?
下面是“多”这一端的PO
Entity
public class StockName2Code {
private String name;
private String code;
private Board board;
public StockName2Code(String name, String code) {
super();
this.name = name;
this.code = code;
}
public StockName2Code() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
@Column(length = 50)
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Entity
public class Board {
/**
* 板块名
*/
private String boardName;
/**
* 该板块内的股票
*/
private Set<StockName2Code> stocks = new HashSet<StockName2Code>();
public Board() {
super();
}
public Board(String boardName, Set<StockName2Code> stocks) {
super();
this.boardName = boardName;
this.stocks = stocks;
}
@Id
@Column(length = 50)
public String getBoardName() {
return boardName;
}
public void setBoardName(String boardName) {
this.boardName = boardName;
}
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "Board_Id")
public Set<StockName2Code> getStocks() {
return stocks;
}
public void setStocks(Set<StockName2Code> stocks) {
this.stocks = stocks;
}
}