我正在設置一個 SeedStack 批處理應用程序,我正在嘗試使用不帶 persistence.xml 的 JPA,而是使用自動 JPA 檢測類。但是,我有這些例外:HHH000318: Could not find any META-INF/persistence.xml file in the classpath Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named myUnit 我在 application.yaml 中有這個屬性: # This configuration file can override main configuration for integration tests jdbc: datasources: myDatasource: provider: org.seedstack.jdbc.internal.datasource.HikariDataSourceProvider url: jdbc:postgresql://localhost:5432/CNVT user: postgres password : admin jpa: units: myUnit: properties: hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect hibernate.hbm2ddl.auto: update classes: org: generated: project: domain: model: jpaUnit: myUnit此外,當我添加 persistence.xml 時,將創建 JPA 單元:o.h.e.t.j.p.i.JtaPlatformInitiator HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]org.seedstack.jpa.internal.JpaPlugin Creating JPA unit myUnit from persistence.xml org.seedstack.jpa.internal.JpaPlugin Created 1 JPA unit(s)但是,我有這個例外:org.seedstack.seed.SeedException: [SPRING] No spring entitymanager我想正確地將 JPA 與 SeedStack 一起使用,而不必執行 persistence.xml。
1 回答

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
查看此處的示例,您的 SeedStack JPA 配置缺少對數據源的引用:
????jpa: ?????units: ???????myUnit: ?????????datasource:?myDatasource ?????????properties: ???????????hibernate.dialect:?org.hibernate.dialect.PostgreSQLDialect ???????????hibernate.hbm2ddl.auto:?update
屬性的缺失或存在datasource
是使 SeedStack 在persistence.xml
基于配置或不基于配置之間進行選擇的原因(但這并不明顯)。
此外,“No spring entitymanager”異常讓我認為您已經配置了 SeedStack 讓 Spring 管理 JPA 事務(使用spring.manageJpa
配置屬性)。如果是這樣,則它與您的 SeedStack JPA 設置相矛盾。
在 SeedStack/Spring 批處理中,您可以選擇:
讓 SeedStack 管理 JPA。在這種情況下,您使用 SeedStack 配置 JPA 并僅在 SeedStack 管理的代碼(業務服務、存儲庫等)中使用 JPA(包括 @Transactional 注釋)。
讓 Spring 管理 JPA。在那種情況下,您使用 Spring 配置 JPA(沒有任何 SeedStack 配置)并設置
spring.manageJpa
為 true。這將允許 SeedStack 管理的代碼使用 Spring 配置的 JPA 事務管理器。
讓 Spring 管理 JPA 在 Spring 批處理作業期間提供更好的性能,因此我推薦第二個選項(但僅適用于批處理作業)。
添加回答
舉報
0/150
提交
取消