Eclipse链接替代@PreUpdate注释?

时间:2012-04-11 07:31:06

标签: java jpa orm entity eclipselink

我一直在研究Entity,oneToMany的关系,问题在于每当我使用它时:

//Parent class    

@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER, 
        targetEntity = FeedbackCategory.class, mappedBy = "parent")    
@PrivateOwned
@OrderBy("category ASC")
private List<Child> children;

//... other code here, i.e. getters-setters

@PrePersist
@PreUpdate
void prePersistUpdate() {

  // set the foreign key of child to this.ID
  if(children != null && !children.isEmpty())
  {
      for(Child ch: children)
      {
          ch.setParent(this);       
      }          
  }
}

更新Parent.class时,尤其是在干净更新实体时,父ID的Id不与子实体(作为外键)一起保存。请帮助...

似乎@PreUpdate无效,@ PrePersist完全有效。

1 个答案:

答案 0 :(得分:1)

一般来说,正确维护模型会更好。

添加addChild()方法,该方法添加子项并设置父项。那么你的模特就不会腐败。

@PreUpdate稍后在提交过程中发生(在确定需要更新对象之后)。我认为没有早期的JPA事件,但您可以使用EclipseLink PreWrite事件。您需要为此使用DescriptorEventListener,其配置方式与EntityListener相同。