Я разрабатываю приложение с использованием Jboss AS 7, CDI, JPA и некоторых других ресурсов.CDI + JPA Несколько @OneToMany - LAZY/EAGER - LazyInitializationException ИЛИ Невозможно создать несколько пакетов
Мой вопрос: Когда я создаю проект в Eclipse, используя Maven-JBoss-WebAPP-архетип он генерирует некоторые файлы, которые я активно изучаю и пытаюсь получить вместе с. Проблема в том, что иногда я вижу, что я немного смущен, использую ли я ресурсы Hibernate или ресурсы JPA.
Второго вопрос: Когда я использую несколько отношений @OneToMany в том же Сущностях я заметил два поведения:
а) без указания нетерпеливого типа для Fetch, развертывает приложение, но когда я пытаюсь использовать этот список дает мне так сильно объясняется ошибка LazyInitializationException.
b) Когда я указываю Eager для FetchType в отношении @ * ToMany, он просто не развертывает приложение. Это дает мне ошибку: невозможно создать несколько пакетов.
Вот проблемный фрагмент кода:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "teamUser" , fetch = FetchType.EAGER)
private Collection<Users> usersCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "teamRanking" , fetch = FetchType.LAZY)
private Collection<Ranking> rankingCollection;
@NotNull
@OneToMany(cascade = CascadeType.ALL, mappedBy = "teamModality" , fetch = FetchType.LAZY)
private Collection<Modality> modalitiesCollection;
public Teams() {
}
public Teams(Long id_team , String name) {
this.id = id_team;
this.name = name;
}
Я читал об этом, и люди говорили мне, что JPA не поддерживает FetchType.EAGER нескольких realtionships в одной и той же Сущности. Но мне нужно использовать множественные отношения в этой сущности. Я не знаю, что делать дальше, потому что я попробовал несколько подходов, ленивый выбор, и все они представляют какую-то проблему. Например, если я оставляю только один класс FetchType.EAGER в классе, он развертывает мое приложение, но он работает неправильно, потому что когда я пытаюсь получить список из базы данных, он дает мне ошибку: LazyInitializationException, а когда я попробуйте поместить все из них с помощью FetchType.EAGER, он просто не развертывается, потому что он дает ошибку: невозможно создать несколько пакетов.
Так что мои проблемы здесь связаны с:
1) Maven-JBoss-WebApp-архетип использует спящий режим или JPA, или оба? 2) Как я могу атаковать эту проблему при использовании нескольких связей @OneToMany в Entity? И хотя я знаю, что с нетерпением собираются коллекции в модели, это не лучший подход, потому что, когда система растет, у меня, вероятно, будут проблемы с производительностью? Итак, как я могу правильно работать с ленивой загрузкой?
Какая реализация JPA вы используете? Hibernate? –
Да, я использую hibernate в JBoss AS 7, который, я думаю, является Hibernate 4.Спасибо за ваш ответ. John – Arthur
. Вы, вероятно, должны посмотреть на это SO для справки: http://stackoverflow.com/questions/10769656/how-to-use-jpa-2-0-manytomany-without-issues использует аннотации Hibernate , но может делать то, что вам нужно. –