问题标签 [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.
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
任何意见或建议将不胜感激,谢谢!
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
hibernate - javax.persistence.criteria 和 org.hibernate.criterion 包有什么区别?
最近我的团队从 Hibernate 3 升级到了 Hibernate 5,所以我正在研究迁移的东西。现在,当我尝试使用 CriteriaQuery 类时,eclipse 显示它可以从“javax.persistence.criteria”和“org.hibernate.criterion”包中导入。
所以我对使用哪一个有点困惑。
如果有人可以解释两者(JPA 和 Hibernate)之间的区别,那将非常有帮助,因为我在概念上不清楚这一点并且很难了解下面发生的事情。
java - 无法从 jar 文件加载 app.war!/WEB-INF/classes
我有一个 spring boot 应用程序,它在创建 Persistence EntityManager 工厂时出现以下错误。
Persistence.createEntityManagerFactory
战争文件位于
/opt/test/app/app.war
和 WEB-INF/classes 也出现在这个 war 文件中。
但是类加载器失败并出现以下错误。
是否缺少任何权限?
Docker 文件参考,
java - Javax 持久性在生产级别将 IDENTITY 更改为 SEQUENCE
对于服务的生产版本,是否可以将 id 生成从更改GenerationType.IDENTITY
为无痛?GenerationType.SEQUENCE
DBMS 是 PostgreSQL。
我需要切换到SEQUENCE
以允许 Hibernate 执行批处理操作。但我的生产服务有一个IDENTITY
大约一年的策略。Entity 类的变化会以某种方式影响之前生成的 ID 吗?
我现在有
如果我将策略更改为 会发生什么GenerationType.SEQUENCE
?
java - 有关自定义 Crud 查询的信息
如何编写只能从我的数据库中获取两个 colmun 的 crud 查询?假设我的数据库中有 4 列 - (id,city,pincode,state) 我只需要来自 crudRepository 查询的 city,picode
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)
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:
但是重新启动并重新测试后,我仍然只看到相同的日志条目,仅此而已......
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 更新调用将按调用顺序执行。
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)有任何向后兼容性?
我会很高兴任何澄清。