У меня действительно простая настройка, чтобы опробовать двунаправленное отображение с аннотациями:
@Entity
public class TypeA extends AbstractModel<TypeA> {
@Id
@GeneratedValue
private int id;
@OneToMany(mappedBy="a")
private Collection<TypeB> bs;
// Getters & Setters ...
}
и
@Entity
public class TypeB extends AbstractModel<TypeB> {
private static final long serialVersionUID = -3526384868922938604L;
@Id
@GeneratedValue
private int id;
@ManyToOne()
@JoinColumn(name="a_id")
private TypeA a;
}
Когда я устанавливаю свойство TypeA.bs, это не влияет на отображение, хотя и должно. Смотрите следующий пример:
TypeB b = new TypeB();
this.typeBDao.save(b);
TypeA a = new TypeA();
a.setBs(ListUtils.createList(b));
System.out.println(a.getBs()); // output: [TypeB@25fe4d40]
this.typeADao.save(a);
System.out.println(a.getBs()); // output: [TypeB@25fe4d40]
this.typeADao.refresh(a);
System.out.println(a.getBs()); // output: []
this.typeBDao.refresh(b);
System.out.println(b.getA()); // output: null
Если отображение двунаправленное, коллекция должна быть заполнена, а свойство a of b должно быть обновлено, но это не так. Есть идеи?
Редактировать Спасибо за помощь, ребята, теперь я понял!