问题标签 [javax.persistence]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2971 浏览

java - 试图在我的代码中找到数据库连接泄漏,使用 Spring / JPA / Hikari

我遇到了一个 Spring Web 应用程序的问题,该应用程序定期遇到从我的连接池中获取连接的错误。最终在日志中我看到如下条目:

  • 引起:javax.persistence.PersistenceException:org.hibernate.exception.JDBCConnectionException:无法获取JDBC连接
  • 原因:java.sql.SQLTransientConnectionException: HikariPool-1 - 连接不可用,请求在 30000 毫秒后超时。

一旦达到这一点,我发现的唯一恢复方法是重新启动 Tomcat。

我认为最可能的解释是我在某处有一些代码没有正确清理其连接 - 将其返回给 Hikari,让某些东西打开,因此 Spring 无法清理它,等等。

为了排除故障,我将我的 hikari 配置泄漏检测阈值设置为 5000 毫秒并启用了日志记录。在那之后,我看到像这样的日志条目

所以它正在检测可能的泄漏。我想可能是误报吗?但这也是我的应用程序中唯一一个在 Spring 应用程序中经常使用的标准服务/存储库模式之外进行数据库访问的类,所以它似乎是罪魁祸首,这是我目前最好的领导。

无论如何,我在跟踪中看到的最后一段非库代码(即我写的东西,所以很可能是导致泄漏的原因!)是我的 DBHelper::getPagedMappedDbResults 方法,相关位包括在这里:

所以基本上我从我的 EntityManager 实例创建一个 Query 对象,设置一些参数,然后运行它以获得一些结果。

完成后,我需要对 Query 对象做些什么吗?q.cleanup()?从阅读文档中我看不到任何类似的东西,但是我没有在这个资源上做好内务吗?

entityManager 本身是从 @Autowired 注释创建的。我的理解是,如果我没有“新建”它来实例化它,而是让 Spring 框架自动装配它,那么 Spring 将做任何必要的清理工作。那正确吗?还是在使用 entityManager 后需要进行一些清理?

版本详情:

  • 雄猫 8 / Java 8
  • Spring 5.0.0.RELEASE
  • Spring Data Kay-RELEASE
  • 休眠 5.2.3.Final
  • 光2.4.5

任何意见或建议将不胜感激,谢谢!

0 投票
1 回答
1568 浏览

java - 如何在java中从H2数据库映射一个id列

我正在尝试创建一个数据表并将该表映射到使用 H2 内存数据库的实体。我正在使用 spring-boot(2.0.2 版)和 flyway 在运行之前创建数据库。

由于某种原因,当休眠要针对架构进行验证时,我无法成功映射标识列。

建议?

桌子:

实体:

映射超类:

Maven依赖:

应用程序属性:

我已经尝试了每一个GenerationType(策略@GeneratedValue

当 spring-boot 应用程序启动时,应用程序上下文在 hibernate 将验证模式时失败:

我在没有解决这个问题的情况下继续前进。我已经为这个问题创建了一个方面驱动的解决方案,如果没有提供,它将输入一个 id 的序列号。

我知道这是一个脆弱的解决方案,但我可以继续前进并专注于更迫切的需求。这仍然是一个应该解决的问题。我用这个解决方案更新了 git-hub 上的存储库:https ://github.com/jactor-rises/jactor

0 投票
1 回答
754 浏览

hibernate - javax.persistence.criteria 和 org.hibernate.criterion 包有什么区别?

最近我的团队从 Hibernate 3 升级到了 Hibernate 5,所以我正在研究迁移的东西。现在,当我尝试使用 CriteriaQuery 类时,eclipse 显示它可以从“javax.persistence.criteria”和“org.hibernate.criterion”包中导入。

所以我对使用哪一个有点困惑。

如果有人可以解释两者(JPA 和 Hibernate)之间的区别,那将非常有帮助,因为我在概念上不清楚这一点并且很难了解下面发生的事情。

0 投票
1 回答
1196 浏览

java - 无法从 jar 文件加载 app.war!/WEB-INF/classes

我有一个 spring boot 应用程序,它在创建 Persistence EntityManager 工厂时出现以下错误。

Persistence.createEntityManagerFactory

战争文件位于

/opt/test/app/app.war

和 WEB-INF/classes 也出现在这个 war 文件中。

但是类加载器失败并出现以下错误。

是否缺少任何权限?

Docker 文件参考,

0 投票
1 回答
225 浏览

java - Javax 持久性在生产级别将 IDENTITY 更改为 SEQUENCE

对于服务的生产版本,是否可以将 id 生成从更改GenerationType.IDENTITY为无痛?GenerationType.SEQUENCEDBMS 是 PostgreSQL。

我需要切换到SEQUENCE以允许 Hibernate 执行批处理操作。但我的生产服务有一个IDENTITY大约一年的策略。Entity 类的变化会以某种方式影响之前生成的 ID 吗?

我现在有

如果我将策略更改为 会发生什么GenerationType.SEQUENCE

0 投票
2 回答
48 浏览

java - 有关自定义 Crud 查询的信息

如何编写只能从我的数据库中获取两个 colmun 的 crud 查询?假设我的数据库中有 4 列 - (id,city,pincode,state) 我只需要来自 crudRepository 查询的 city,picode

0 投票
1 回答
25 浏览

generics - 如何在泛型中指定 javax.persistence @Entity 注释类?

我想编写作用于例如从 Spring 扩展的类的函数JpaRepository<TestEntity, Integer>

我试过:实体:

回购:

服务类看起来像这样:

但是,我在 Intellij 中遇到错误:

函数中的 apply (capture < ? extends org.springframework.data.jpa.repository.JpaRepository< ? extends javax.persistence.Entity,java.lang.Integer>>) 不能应用于 (.java_tests.database.TestEntityRepository)

0 投票
0 回答
1798 浏览

java - 如何解决 ConstraintViolationException?

当我尝试在我的 CRM Web 应用程序(PrimeFaces)中保存一些数据时,我得到了这个异常:

问题是我无法弄清楚这是什么原因。遗憾的是,日志堆栈 strace 根本不包含任何有用的信息......

我有很多断点,还插入了这个 ValidatorFactory 代码行,我在 StackOverflow 上找到了我拥有的 Insert 和 Edit 方法(这些在我的 AbstractFacade 类中),但是这个 ValidatorFactory 在实际保存方法之前给了我 0 个无效实体,所以我仍然不聪明......:

错误出现在方法getEntityManager().merge(entity);中调用之后edit()

有人知道现在该怎么做吗?

编辑:

我正在使用 Netbeans、EclipseLink (JPA 2.1) 和 Glassfish。日志说:“有关详细信息,请参阅嵌入式 ConstraintViolations。”

这个 EMBEDDED ConstraintViolations 到底在哪里?我在 Glassfish 日志中没有看到任何关于此的内容...

我还编辑了我的 persistence.xml:

但是重新启动并重新测试后,我仍然只看到相同的日志条目,仅此而已......

0 投票
1 回答
1399 浏览

java - 在不同线程中调用 SQL 更新后如何修复“SQLException SQL0913”

我正在调用一种方法,它对 DB2 数据库中的单个数据集执行 SQL UPDATE。从 ActiveMQ 队列接收到消息后,该方法在不同的线程中自动调用。它在 2 秒内被调用了 5 次,但是因为第一次调用在数据集上设置了 WRITE-Lock,所以接下来的 3 次调用必须等待。在第一次调用完成更新后,第二次调用不会执行更新,而是会运行一个新的方法调用(行中的第 5 个调用)。问题是,中间的三个调用没有识别出 WRITE-Lock 被释放,并且在 1 分钟超时后抛出了一个 SQLException 错误 SQL0913。

该数据库是 IBM DB2 数据库(7.2 版),我的程序在 JBoss EAP-6.4 上运行。从日志来看,第一个调用似乎需要几秒钟才能执行,在接下来的三个调用之间正在等待第一个调用。但是在第一个完成执行后,接下来的三个调用没有进行。

我希望,在第一次调用完成后,接下来的三个 SQL 更新调用将按调用顺序执行。

0 投票
1 回答
864 浏览

java - javax.persistence、javax.persistence-api和javaee-api的区别

我对 javax.persistence、javax.persistence-api 和 javaee-api 的区别和内容感到困惑。javaee-api 可能包含更多,但我只对 JPA 的东西感兴趣(如果存在于 javaee-api 中)。从抽象的角度来看,有 JPA 作为规范和一些 JPA 的实现,如 eclipselink。因此,如果配置中存在两种依赖关系,则很容易理解:一种用于规范内容,一种用于实现。但这似乎有点复杂,所以我有以下问题:

  • 我假设“javax.persistence-api”包含接口之类的东西,因此 javax.persistence-api 包含 JPA 的编程内容声明而不实现规范。因此,如果我将版本 2.2 中的 javax.persistence-api 设置为依赖项(maven 或 gradle),我定义必须使用 JPA 2.2(必须由实现支持),如果我将版本 2.1 中的 javax.persistence-api 设置为依赖项,我定义必须使用/支持 JPA 2.1。那正确吗 ?

  • “javax.persistence”依赖项的目的/内容是什么(例如,可在 2.2.1 版的这个 mvn 存储库中下载)?

  • 7.0 版中的 javaee-api是否已经包含 javax.persistence-api,如果是,是哪个版本?2.1?我如何或在哪里可以发现这些信息?

  • 如果我使用最新的可能实现,例如 EclipseLink 2.7.4(2019 年第一季度),它声明它支持 JPA 2.2,是否对旧 JPA 版本(如 2.1)有任何向后兼容性?

我会很高兴任何澄清。