[code="java"]
@Entity
@Table(name="train_menu")
public class Menu implements Serializable {
private static final long serialVersionUID = -2245830056669823925L;
private int ID;
private Menu parent;
private Set<Menu> children;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_MENU")
@SequenceGenerator(name="SEQ_MENU",sequenceName="train_menu_seq",allocationSize=1)
public int getID() {
return ID;
}
public void setID(int id) {
ID = id;
}
@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE},fetch=FetchType.LAZY)
@JoinColumn(name="parent_id",nullable=false)
public Menu getParent() {
if(parent == null){
parent = new Menu();
}
return parent;
}
public void setParent(Menu parent) {
this.parent = parent;
}
@OneToMany(mappedBy="parent", fetch=FetchType.LAZY)
public Set<Menu> getChildren() {
if(children == null){
children = new LinkedHashSet<Menu>();
}
return children;
}
public void setChildren(Set<Menu> children) {
this.children = children;
}
}
[/code]
我的数据库
[code="sql"]
create table TRAIN_MENU
(
ID INTEGER not null,
PARENT_ID INTEGER not null
)
[/code]
插入数据是有问题,报java.lang.StackOverflowError;
如果我把cascade={CascadeType.PERSIST,CascadeType.MERGE}去掉的话,就报java.sql.BatchUpdateException: ORA-02291: 违反完整约束条件 (CDB.FK87A3E136CEC550B2) - 未找到父项关键字
请问这是咋回事。。。折磨我两天了,orz
[b]问题补充:[/b]
我还没有数据啊,这是个菜单表,我就是要进行增加操作啊
你插入到数据库的数据应该像这样的格式:
id parentid
1 0
101 1
10101 101
102 1
10201 102
查查数据吧.