У меня странное исключение с WebLogic 12.2.1.3, Hibernate 5.3, Sprnig Data JPA и Java EE.
У меня есть база данных и общий источник данных JDBC в weblogic с именем JNDI:jdbc/UsersDS.
Когда я пытаюсь перечислить записи в нем, я получаю действительно длинное исключение, которое я не хочу вставлять сюда, поэтому я использовал Pastebin: Вот этоесть .Пожалуйста, дайте мне знать, если я вместо этого вставлю его здесь.
У меня точно такая же настройка для этого артефакта, как и для другого, который подключается к тому же серверу, но к другой базе данных., с другим пользователем.Это работает как очарование, это не работает.Единственное отличие, которое я могу себе представить, связано с тем, что в артефакте, из которого я получаю ошибку, Spring Data Redis включен как зависимость вместе с Spring Data JPA.
Persistence.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="UsersDS" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>jdbc/UsersDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.transaction.factory_class"
value="org.hibernate.transaction.JTATransactionFactory"/>
<property name="hibernate.transaction.manager_lookup_class" value="javax.transaction.TransactionManager"/>
<property name="hibernate.transaction.jta.platform" value="Weblogic"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
</properties>
</persistence-unit>
</persistence>
Ui .: Еще одна вещь, которая может быть связана с этой проблемой, заключается в том, что у меня есть и Spring Data JPA, и Redis на пути к классам, я должен был пометить интерфейс JpaRepository как @NoRepositoryBean
, потому что я быполучить дубликат в противном случае.Итак, у меня есть метод для создания компонента репозитория CDI:
@Inject
private EntityManager entityManager;
@Produces
@RequestScoped
public UserRepository userRepository() {
return createRepository(UserRepository.class);
}
private <T extends Repository> T createRepository(Class<T> repositoryClass) {
RepositoryFactorySupport factory = new JpaRepositoryFactory(entityManager);
return factory.getRepository(repositoryClass);
}
UI2 .: Я также написал несколько интеграционных тестов с базой данных H2 в памяти, и все работает гладко