我有一个 Google Cloud Dataflow 应用程序,作为转换的一部分,它通过 JPA 2 和 Hibernate 将一些信息记录到 MySQL 数据库。当使用 DirectPipelineRunner 运行此应用程序时,它会找到 persistence.xml 并运行良好。
但是,当我尝试使用 BlockingDataflowPipelineRunner 时,持久性上下文不会初始化,因为它找不到 persistence.xml。也许无法从 CLASSPATH 加载?该消息是找不到 persistence.xml 中指定的唯一持久性单元。
有人成功地将 JPA 2 和 Hibernate 与 Dataflow 应用程序结合使用吗?如果是这样,那么在使用 BlockingDataflowPipelineRunner 时,您必须克服哪些障碍才能使其正常工作?
最佳答案
默认情况下,Hibernate 在许多位置查找 persistence.xml 文件。您可能需要确认上传的 jar 包含 META-INF/persistence.xml。
如果添加标志
--workerLogLevelOverrides=org.hibernate#TRACE
,这应该为您提供与 Hibernate 相关的更详细的输出(您可能需要配置 JBoss 日志记录以转到 SLF4J 或 JUL 才能显示 Hibernate 日志记录,docs.jboss.org/hibernate/orm/4.3/topical/html/logging/…)。
关于java - 使用 JPA 2 和 Hibernate 的 Google Cloud Dataflow 应用程序无法与 BlockingDataflowPipelineRunner 一起运行。找不到 persistence.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348572/