Это двусторонние отношения. Вы должны всегда обновлять обе стороны кораблей отношений. В противном случае, если у вас напрямую не возникнет проблем при сохранении, вы можете легко повредить кеш и столкнуться с некоторыми странными ошибками в вашем приложении.
Итак, если у вас есть это:
A a = em.find(A.class, Aid);
B b = em.find(B.class, Bid);
a.setB(b);
Вы должны добавить это сразу после:
List<A> aList = b.getList();
if (!aList.contains(b)) {
aList.add(b);
}
2 Когда я делаю a.setI (1); без слияния -
это изменилось в БД (как я и думал
будет)
Если вы используете entityManager в ejb (что, как мне кажется, вы делаете с вашими тегами), это нормально, что изменения в управляемых объектах сохраняются. Это был вопрос?
Кроме того, вы должны убедиться, что сущности identity, equals () и hashcode () определены правильно (возможно, это так, но вы не упомянули об этом).