У меня есть странное исключение с 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 в базе данных памяти, и все работает гладко
Вы можете опубликовать также конфигурацию пружины?
нет пружинной конфигурации. Это среда CDI
Итак, вы хотите использовать jdbc/UsersDS, но в вашей конфигурации есть jdbc/FiveshellyD. Что неверно.
да, извините, я забыл отредактировать это, я исправил конфигурацию через пару минут после публикации. Я заменил UsersDS на FiveshellyDS, потому что я знаю, что этот источник данных работает, потому что он работает с другим артефактом.




У меня есть решение, и это, вероятно, какое-то обходное решение или sg, но у меня нет ничего другого.
Итак, что произошло, у меня были (по умолчанию) глобальные транзакции в источнике данных weblogic. Выключение решило проблему
Нашел в журнале такую строчку:
SessionFactoryRegistry - Not binding SessionFactory to JNDI, no JNDI name configuredЭто что-нибудь значит? Таблица в базе данных создается, хотя