Чтобы заставить это работать, вы должны загрузить Hibernate. Сделать это:
В своем основном классе найдите экземпляр EntityManagerFactory. Вероятно, это выглядит примерно так:
public static final EntityManagerFactory EMPFAC = Persistence.createEntityManagerFactory("jpa")
Оставьте пока эту строку. Над ним добавьте следующее:
private static StandardServiceRegistryBuilder servReg = new StandardServiceRegistryBuilder();
static {
//Do this for every property in persistence.xml
servReg.applySetting("hibernate.connection.url", "jdbc://myurl://www.example.org");
}
Добавьте servReg.applySetting()
для каждого свойства в persistence.xml
. Затем добавьте это ниже:
private static MetadataSources sources = new MetadataSources(servReg.build());
static {
// Do this for every pojo with JPA annotations
sources.addAnnotatedClass(Pojo.class);
}
Добавьте sources.addAnnotatedClass()
для каждого pojo с аннотацией JPA в вашем приложении. Почти готово здесь. Теперь создайте класс, который реализует StatementInspector
следующим образом:
public class Inspector implements StatementInspector {
private static final long serialVersionUID = 5545844969759630544L;
@Override
public String inspect(String select) {
// modify string here
return select;
}
}
Наконец, вернитесь к своему основному классу приложения и под статическим блоком, в котором вы зарегистрировали свои pojos, добавьте следующее:
public static final SessionFactory EMPFAC = sources.buildMetadata().getSessionFactoryBuilder().applyStatementInspector(new Inspector()).build();
Теперь вы можете вернуться к persistence.xml
и удалить там объявления свойств. Если вы еще этого не сделали, также удалите свою декларацию public static final EntityManager
(вы заменили ее на SessionFactory).
РЕДАКТИРОВАТЬ: вы можете удалить persistence.xml
, и ваше приложение все равно должно работать нормально.
Все готово!
person
Jason Louro
schedule
29.08.2016