3

次のように、 Entity2と1対多の関係を持つエンティティEntity1があり ます。

1- エンティティ 1:

@Entity
@Table(name = "Entity1", catalog = "mydb")
public class Entity1 implements java.io.Serializable {

  @OneToMany(fetch = FetchType.LAZY, mappedBy = "entity1", cascade = javax.persistence.CascadeType.ALL)
  @OrderBy("id")
  private Set<Entity2> collection = new HashSet<Entity2>(
            0);

}

2- Entity2: (equals および hashcode メソッドのオーバーライド)

@Entity
@Table(name = "entity2", catalog = "advertisedb")
public class Entity2 implements java.io.Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "pkid", unique = true, nullable = false)
    @Basic(fetch = FetchType.EAGER)
    private long id;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "fk_entity1", nullable = false)
    private Entity1 entity1;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "apid", nullable = false)
    private Entity3 entity3;

}

3-コレクションからエンティティを削除する方法は次のとおりです。

    entity1Obj.getEntity2().remove(entity2);
    log.debug("size after remove: "+ entity1Obj.getEntity2().size()); // size decreases correctly, so the entity is removed from the collection
    entity1Dao.updateEntity1(entity1);

4-DAO メソッド:

   public void updateEntity1(Entity1 entity1) {
        getCurrentSession().update(getCurrentSession().merge(entity1));
    }

問題:コンソールに表示されるのは、削除する必要がある entity2 の選択クエリであり、削除クエリはなく、何も削除されていません。

この問題を修正する方法を教えてください。

4

1 に答える 1

4

に置き換えましたが、現在は正常に動作cascade = CascadeType.ALLorphanRemoval = trueています。

于 2012-07-02T14:39:20.943 に答える