2011-05-01 92 views
0

我有两个类:支出和类别。支出可以有多个类别。我希望通过支出(家长)实施所有类别(儿童)级联保存。但无法实现这一点。在坚持支出记录没有分类条目创建。请让我知道我做错了什么。这里是我的课:JPA级联坚持不工作

@Entity 
@Table(name="EXPENDITURE") 
public class Expenditure { 

    private Long id; 

    @OneToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE}, mappedBy="expenditure") 
    private Set<Category> associatedCategories = new HashSet<Category>(); 

    public Expenditure() { } 

    @Id @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="EXPENDITURE_ID") 
    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 

    public void addCategory(Category category) 
    { 
     this.associatedCategories.add(category); 
     category.setExpenditure(this);  
    } 
} 

@Entity 
@Table(name="CATEGORY") 
public class Category { 

    @Id @GeneratedValue 
    @Column(name="CATEGORY_ID") 
    private Long id; 
    private String name; 

    @ManyToOne(targetEntity=Expenditure.class) 
    private Expenditure expenditure; 

    public Category(){} 
    public Category(String name) 
    { 
     this.name = name; 
    } 
    public Category(String name,String description) 
    { 
     this.name = name; 
    } 
    @Column(name="NAME") 
    public String getName() { 
     return name; 
    }  

    public Expenditure getExpenditure() { 
     return expenditure; 
    } 
    public void setExpenditure(Expenditure expenditure) { 
     this.expenditure = expenditure; 
    } 

回答

0

尝试增加

@ManyToOne(targetEntity=Expenditure.class) 
@JoinColumn(name="parentExpenditureId") // or whatever column name exists in your database schema 
private Expenditure expenditure; 

而且也不会在你的实体类混合起来的字段和属性的访问类型。

+0

感谢Satadru的回复..我能够通过将标识符注释转移到支出类中的字段级别来解决我的问题。它没有添加JoinColumn(我认为是可选的)。但是,我不确定原因! – Sumit 2011-05-01 18:45:01