Как использовать 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 и на ентити основного проекта

→ Ссылка