tree型数据的问题

[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
查查数据吧.