Создайте эти связки:
- Модель (ваши аннотированные классы JPA)
- Lib (javax.persistence)
- DAO (persistence.xml, классы поставщика сохраняемости)
- Бизнес код
Видимость:
- Модель импорта и экспорта Lib
- DAO импортирует модель (и, следовательно, Lib). DAO экспортирует методы поиска EM и Model.
- Импорт бизнес-кода DAO
[EDIT] То, что вы должны понять, это то, как работает загрузка классов OSGi: если у вас есть два пакета A и B, и вы импортируете оба, которые используются в C, то A не может видеть B, а B не может ничего видеть из A. С может видеть оба.
Теперь A и B используют библиотечный комплект X. Если A создает некоторый экземпляр из X и передает его C, который, в свою очередь, передает его B, вы получите ошибки, так как X из A не тот же X, что и из B. Каждый Х полностью инкапсулирован из внешнего мира.
В языке Java: классы из X создаются с использованием разных загрузчиков классов, и даже если имя одинаковое, классы из разных загрузчиков классов никогда одинаковы.
Вот почему вы должны избегать импорта X из двух разных путей.