Hibernate Cascade PERSIST

У меня есть общий вопрос о Hibernate, что я сражаясь с.

У меня есть класс A и класс B, где B зависит от A

В моем коде, когда я вызываю em.persist (objOfTypeA), я ожидал, что вставка будет вставлена ​​в обе таблицы AAA и BBB. Если я вручную нажимаю A, получаю идентификатор A и заполняю его списком для каждого объекта, а затем сохраняю этот список, все работает. Но я ожидал, что это произойдет волшебным образом с помощью Hibernate.

Я что-то не так делаю? Или я просто слишком многого жду от Hibernate?

Спасибо

@Entity
@Table(name = "AAA")
@Veto
public class A {

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


    @NotNull
    @Column(name = "Name")
    private Long name;

    ...

    @OneToMany(mappedBy="a", fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
    private List<B> b;
...
}

@Entity
@Table(name = "BBB")
@Veto
public class B {

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

    @NotNull
    @Column(name="AId")
    private Long aId;

    @NotNull
    @Column(name = "Name")
    private Long name;

    @JoinColumn(name = "AId", referencedColumnName="Id", updatable = false, insertable = false)
    @ManyToOne(optional = false)
    private A a;
...     
}
7
задан WonkeyDonkey 25 February 2012 в 11:21
поделиться