Java org.h2.message.DbException.getJdbcSQLException

Java org.h2.message.DbException.getJdbcSQLException,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个实体没有在Postgres数据库中创建表。实体如下所示: @Getter @Setter @ToString @Entity @Table(name = "rule_history") @AllArgsConstructor @NoArgsConstructor @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class) public class RuleHistory extends A

我有一个实体没有在Postgres数据库中创建表。实体如下所示:

@Getter
@Setter
@ToString
@Entity
@Table(name = "rule_history")
@AllArgsConstructor
@NoArgsConstructor

@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
public class RuleHistory extends Auditable<UUID> {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private UUID id;

    @JsonBackReference
    @ManyToOne
    @JoinColumn(name = "ruleExecution_id")
    private RuleExecution ruleExecution;

    @Schema(description = "The Rule that was evaluated")
    @OneToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "rule_id", referencedColumnName = "id")
    private Rule rule;

    @Column(name = "rule_entity")
    private RuleTarget ruleTarget;

    @Column(name = "entity_id")
    private UUID entityId;

    @Type(type = "jsonb")
    @Column(name = "rule_response" ,columnDefinition = "json")
    private String ruleResponse;

}
这是项目中使用的application.properties文件:

logging.level.web=TRACE
logging.level.org.springframework.web=TRACE
springdoc.api-docs.path=/api-docs
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.swagger-ui.disable-swagger-default-url=true


spring.datasource.url=jdbc:postgresql://localhost:5432/cilling
#spring.datasource.url=jdbc:postgresql://postgres:5432/cilling
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=false

management.endpoints.web.exposure.include=health,info
management.endpoints.web.exposure.exclude=
management.endpoint.health.show-details=always
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true


server.port=8080


spring.security.securityEnabled=1
spring.api.security.jwt.secret=d-83scwew3435f
spring.api.security.jwt.expirationInMinute=1
spring.api.security.jwt.refreshExpirationInMinute=9000000


spring.sendgrid.api-key=d-83scwew3435f
spring.monetizenow.io.mail.sender.email=example@example.com
spring.monetizenow.io.mail.sender.name=Team
user.reg.email.verify.sengrid.template.id=d-83scwew3435f
user.reg.email.verify.base.url=http://localhost/verify-email
user.pwd.reset.sengrid.template.id=d-83scwew3435f
user.password.reset.email.base.url=http://localhost/password-reset
user.otp.email.sengrid.template.id=d-83scwew3435f


file.upload-dir=/opt/DonytyzAppPhoto
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=500KB
spring.servlet.multipart.max-request-size=500KB

如何更正它?

堆栈跟踪指出您正在使用H2数据库驱动程序。如果您使用的是PostgreSQL数据库管理系统,您应该使用PostgreSQL自己的JDBC驱动程序。这是我在application.properties文件中的内容:
spring.datasource.driver class name=org.PostgreSQL.driver
,因此我没有使用您提到的H2数据库驱动程序。请包括application.properties,以了解为什么在使用时会显示与H2相关的消息PostgreSQL@samabcde我更新了问题并提供了application.properties文件。堆栈跟踪指出您正在使用H2数据库驱动程序。如果您使用的是PostgreSQL数据库管理系统,您应该使用PostgreSQL自己的JDBC驱动程序。这是我在application.properties文件中的内容:
spring.datasource.driver class name=org.PostgreSQL.driver
,因此我没有使用您提到的H2数据库驱动程序。请包括application.properties,以了解为什么在使用时会显示与H2相关的消息PostgreSQL@samabcde我更新了问题并提供了application.properties文件。
Caused by: org.h2.jdbc.JdbcSQLException: Unknown data type: "JSON"; SQL statement:
logging.level.web=TRACE
logging.level.org.springframework.web=TRACE
springdoc.api-docs.path=/api-docs
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.swagger-ui.disable-swagger-default-url=true


spring.datasource.url=jdbc:postgresql://localhost:5432/cilling
#spring.datasource.url=jdbc:postgresql://postgres:5432/cilling
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=false

management.endpoints.web.exposure.include=health,info
management.endpoints.web.exposure.exclude=
management.endpoint.health.show-details=always
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true


server.port=8080


spring.security.securityEnabled=1
spring.api.security.jwt.secret=d-83scwew3435f
spring.api.security.jwt.expirationInMinute=1
spring.api.security.jwt.refreshExpirationInMinute=9000000


spring.sendgrid.api-key=d-83scwew3435f
spring.monetizenow.io.mail.sender.email=example@example.com
spring.monetizenow.io.mail.sender.name=Team
user.reg.email.verify.sengrid.template.id=d-83scwew3435f
user.reg.email.verify.base.url=http://localhost/verify-email
user.pwd.reset.sengrid.template.id=d-83scwew3435f
user.password.reset.email.base.url=http://localhost/password-reset
user.otp.email.sengrid.template.id=d-83scwew3435f


file.upload-dir=/opt/DonytyzAppPhoto
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=500KB
spring.servlet.multipart.max-request-size=500KB