@Entity
public class User{
private String username;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name="user_group",
joinColumns=@JoinColumn(name="user_id",referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="group_id",referencedColumnName="id"))
private Set<Group> groups=new HashSet<Group>();
}
@Entity
public class Group{
private String name;
@ManyToMany(fetch = FetchType.LAZY,mappedBy = "groups")
private Set<User> users=new HashSet<USer>();
}
У меня есть отношение ManyToMany между этими двумя объектами пользователь и группа .
Я инициализирую группы, используя JOIN FETCH, как,
SELECT u FROM User u JOIN FETCH u.groups g WHERE u.id = 1
Это работает до тех пор, пока в коллекции моих групп есть хотя бы один объект, но возникает проблема, когда user.groups () пуст.В этом случае я не могу инициализировать groups , но мне все еще нужно инициализировать коллекцию, чтобы я мог добавить новые элементы в группы, в противном случае я получаю ошибку LazyinitializationException.
Например:
у нас есть user1 , и у него есть 2 группы в названных коллекциях групп, group1 и group2 .
user1.getGroups(); --> group1, group2
В этом случае вышеупомянутый запрос работает, но если groups пуст, он больше не работает, и моя проблема начинается здесь,
Я пытаюсьдобавьте группу к user1 и я стану LazyinitializationException.
Group group3=new Group("group3");
user1.getGroups().add(group3); --> Here will reported an error
Как я могу предотвратить это?
Заранее спасибо.
R.