Как использовать Hibernate в самописной библиотеке Java?
Я пишу свою библиотеку, в которой нужно хранить данные в БД. Для этого использую Hibernate. Подключаю библиотеку к стороннему приложению, где уже открыто соединение Hibernate, через jar. Во время транзакций внутри библиотеки, связанных с моими сущностями, получаю ошибку:
org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'CustomVector'
Предполагаю, что Hibernate не видит сущностей из библиотек, поскольку в БД также не создались таблицы, связанные с ними. Отмечу, что моя БД никак не связана сущностями с БД в приложении, все спроектировано автономно.
Работа с Hibernate производится через аннотации типа @Entity у основных классов, а также через DAO-классы. Соединение осуществляю через EntityManagerFactory и EntityManager, они приходят из внешнего приложения в библиотеку.
Каким образом можно подключить библиотеку к существующему в другом приложении соединению с БД, чтобы в дальнейшем библиотека могла работать со своими данными там? Или как это можно обойти, чтобы библиотека могла хранить свои данные где-то и затем подгружать и обновлять их по мере надобности?
Один из классов:
@Entity
@Table(name="custom_profile")
public class CustomVector {
@Id
@Column(name="vector_id")
private int vector_id;
// ...
}
Запрос, на который приходит ошибка:
FROM CustomVector WHERE vector_id = 2
Ответы (1 шт):
Энтити из вашей либы не попадают в @EntityScan. По дефолту в спринг дата EntityScan настраивается на ComponentScan.
P.S. Если явно прописать EntityScan в либе или в проекте на пакеты либы, то это заменит конфиги основного проекта и нужно будет явно прописать EntityScan и на ентити основного проекта