小编dfc*_*che的帖子

HikariCP - 连接不可用

我们的项目中有Spring-boot/Hibernate/PostgreSQL应用程序,并使用Hikari作为连接池.我们继续遇到以下问题:几个小时后,活动连接数量增长到极限,我们得到这样的错误(完整堆栈跟踪在问题的最后):

Caused by: java.sql.SQLTransientConnectionException: HikariPool-0 - Connection is not available, request timed out after 30000ms.
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:213) ~[HikariCP-2.4.1.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:163) ~[HikariCP-2.4.1.jar:na]
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85) ~[HikariCP-2.4.1.jar:na]
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
    ... 126 common frames omitted
Run Code Online (Sandbox Code Playgroud)

这是版本信息:

Spring-boot version:   1.2.3.RELEASE
HikariCP version:      2.4.1
Hibernate version:     4.3.6.Final
Postgresql jdbc:       9.3-1102-jdbc41
Server version:        Apache Tomcat/8.0.23
JVM Version:           1.8.0_45-b14
Run Code Online (Sandbox Code Playgroud)

JPA/Hibernate配置:

jpa:
    database-platform: org.hibernate.dialect.PostgreSQL82Dialect
    database: POSTGRESQL
    openInView: false
    show_sql: false
    generate-ddl: false
    hibernate:
        ddl-auto: none
        naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
    properties:
        hibernate.cache.use_second_level_cache: true
        hibernate.cache.use_query_cache: false …
Run Code Online (Sandbox Code Playgroud)

postgresql hibernate spring-boot hikaricp

47
推荐指数
4
解决办法
6万
查看次数

使用liquibase标记将最大列值设置为序列起始值

我想知道是否有可能从某个表中获取最大列值并将其设置为没有纯sql的起始序列值.以下代码不起作用:

   <property name="maxId" value="(select max(id)+1 from some_table)" dbms="h2,mysql,postgres"/>
   <changeSet author="author (generated)" id="1447943899053-1">
      <createSequence sequenceName="id_seq" startValue="${maxId}" incrementBy="1"/>
   </changeSet>
Run Code Online (Sandbox Code Playgroud)

出了错误:

Caused by: liquibase.parser.core.ParsedNodeException: java.lang.NumberFormatException: For input string: "${m"
Run Code Online (Sandbox Code Playgroud)

我试过没有括号select ...等等,结果相同.那么使用计算值作为起始序列值是不可能的?

sql liquibase

13
推荐指数
1
解决办法
3474
查看次数

设置Intellij IDEA JPA控制台命名策略

我有一个全默认(Lombok 除外)Spring Boot 2.5.6 + PostgreSQL 项目,在 Intellij IDEA 2021.2.3 中打开了一个非常基本的 JPA 映射。JPA 配置是通过注释实现的(无 XML)。该应用程序本身工作正常,记录可以从数据库中保存和检索。在“持久性”窗口中,我可以正确地看到我的 JPA 结构,数据源已分配。这是实体代码:

@Entity
@Data
...
public class Cover {
...
private String ageRestriction;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用例如执行查询时,select c from Cover c我收到错误:

jpa-ql> select c from Cover c
[2021-11-01 16:14:03] [42703] ERROR: column cover0_.agerestriction does not exist
[2021-11-01 16:14:03] Hint: Perhaps you meant to reference the column "cover0_.age_restriction".
Run Code Online (Sandbox Code Playgroud)

我尝试将命名策略配置添加到我的设置中,但这没有效果:

spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
        implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
Run Code Online (Sandbox Code Playgroud)

我在持久性单元上下文菜单中也没有看到“分配命名策略”(参见屏幕截图)。有没有办法强制 JPA 控制台使用与我的应用程序相同的命名策略? 集成开发环境

PS:@Column在指定所有多字字段名称并添加 @Table 注释schema …

hibernate jpa intellij-idea spring-boot

8
推荐指数
0
解决办法
425
查看次数