天道酬勤,学无止境

h2

H2 数据库 Json 字段 Hibernate 转换器异常(H2 Database Json Field Hibernate Converter Exception)

问题 我只是尝试在 h2 中插入一个 json 值。 然后我想用休眠转换器将这个 json 值作为对象取回。 但错误如下所示: 我的插入查询是: INSERT INTO log( id, activities, date) VALUES (1, '[{"actionType": "EMAIL"}]', '2019-12-10 00:00:00'); 当我尝试使用 hibernate 转换器取回此字段时,该字段带有引号: "[{"actionType": "EMAIL"}]" 但它应该是: [{"actionType": "EMAIL"}] org.springframework.dao.InvalidDataAccessApiUsageException: 给定的字符串值:"[{"actionType": "EMAIL"}]" 无法转换为 Json 对象; 嵌套异常是 java.lang.IllegalArgumentException: The given string value: "[{"actionType": "EMAIL"}]" 无法转换为 Json 对象 实体: @Entity @Table(name = "log") public class RuleLog { @Id @GeneratedValue(strategy = GenerationType

2021-10-25 22:57:40    分类:技术分享    hibernate   unit-testing   h2

带有枚举的 QuerySyntaxException(QuerySyntaxException with enum)

问题 我有一个像这样的 UserAssignmentRole 类: @Data @Entity public class UserAssignmentRole { ... @Enumerated(EnumType.STRING) public Role role; } 而角色是枚举,它看起来像这样: public enum Role{ admin, member, pending } 现在,当我在我的存储库中尝试查询以选择所有具有管理员角色的人时,它给了我错误: @Query("select uar from UserAssignmentRole uar where uar.role=Role.admin") public List<UserAssignmentRole> listAdmin(Long userID, Long assignmentID); 如何解决这个问题? 错误: org.hibernate.hql.internal.ast.QuerySyntaxException:无效路径:'Role.admin' 完整错误:https://pastebin.com/tk9r3wDg 回答1 您可以尝试不自己编写此 sql,而是使用这样的存储库创建代码: @Repository public interface UserAssignmentRolelRepository

2021-10-25 21:36:08    分类:技术分享    spring   spring-boot   spring-mvc   jpa   h2

如何在H2数据库SQL查询中使用当前日期(How to use current date in H2 database SQL query)

问题 我需要类似的东西 select * from tableName where date_column > now() 但是, now()在 H2 中不起作用。 请指教。 回答1 使用CURRENT_TIMESTAMP select * from tableName where date_column > CURRENT_TIMESTAMP() CURRENT_TIMESTAMP 回答2 如果您只想与当前日期进行比较,请使用 select * from tableName where date_column > CURRENT_DATE() 如果您还想与当前日期和时间进行比较 select * from tableName where date_column > CURRENT_TIMESTAMP

2021-10-25 18:18:05    分类:技术分享    sql   h2

JHipster H2 DB Non-admin User

I am trying to run my spring-boot/liquibase/H2 database with a non-admin user and am having some problems understanding how to do this. First off, I have seen some information here and tried to set up my application.yml this way. datasource: type: com.zaxxer.hikari.HikariDataSource url: jdbc:h2:mem:test username: USERLIMITED password: user_limited_password liquibase: contexts: dev, faker user: THELIQUIBASEUSER password: THELIQUIBASEPASSWORD Also put these sql statements in the changelog to run so that the user I want is created and given proper access controls: <sql>DROP USER IF EXISTS

2021-10-25 17:26:56    分类:问答    spring-boot   jhipster   h2   liquibase

如果将 Hibernate 与数据库(和 c3p0 dbpooling)一起使用仍然可以并且安全地直接获得绕过 Hibernate 的连接(If using Hibernate with Database (and c3p0 dbpooling) is is still possible and safe to directly get connection bypassing Hibernate)

问题 使用 Hibernate 4.3.11 和 H2 1.4.199 和 C3p0 如果将 Hibernate 与数据库一起使用仍然可以并且安全地直接从池中绕过 Hibernate 获取连接? 我正在尝试编写一个 sql 查询,现在我知道我可以使用 session.createSQLQuery() 但这返回一个 Hibernate org.hibernate SQLQuery 类而不是一个 java.sql.Connection 这给我尝试设置参数造成了问题,所以我想尝试使用 Connection 代替。 回答1 尝试这个。 import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; sessionFactory.getSessionFactoryOptions().getServiceRegistry().getService(ConnectionProvider.class).getConnection(); 我尚未对此进行测试,目前无法进行。 我在 ConnectionProvider 上只有 50-50,因为我不确定 c3p0 的提供程序类是什么。 可能是org.hibernate.c3p0.internal.C3P0ConnectionProvider或者你已经知道了。 编辑 11-10

2021-10-25 12:01:50    分类:技术分享    java   sql   hibernate   h2   c3p0

如何使用h2-browser查看play 2.7 H2数据库的内容?(How do you view contents of play 2.7 H2 database using h2-browser?)

问题 在 Play 2.7 中,您如何查看嵌入式 H2 数据库的内容? 前期研究: 看来步骤应该是运行sbt shell 。 然后运行h2-browser和sbt run使它们处于同一进程中? 如果使用 slick,则调用端点以触发编译/数据库创建。 带有配置 db.default.driver=org.h2.Driver db.default.url="jdbc:h2:mem:play" db.default.user=sa db.default.password="" 我已连接,但无法进行身份验证。 尝试了多个 usr/密码组合。 错误的用户名或密码 [28000-199] 28000/28000 斯卡拉:2.13 玩滑:4.0.2 h2:1.4.199 回答1 原因: 第一次连接H2数据库时,H2数据库初始化了用户名和密码,但是在配置文件中定义了数据库用户名和密码的属性,导致冲突。 解决方案: 关闭程序,关闭数据库连接(如果程序没有关闭,会报错,无法更改) 删除数据库,删除.idea下dataSources中的xml文件重新创建数据库并启动项目

2021-10-25 03:35:20    分类:技术分享    playframework   h2   slick

H2 - (相当)长插入失败,错误 42000(H2 - (Quite) long INSERT failing with error 42000)

问题 H2 内存中 - 插入 - 错误 42000 尝试了 1.4.196、1.4.197、1.4.199 版本。 我还尝试在 H2 服务器(本地)上执行 INSERT:也失败了 给出错误的行:(抱歉,出于安全原因,我无法生成更多): INSERT INTO tb_ae (server, record_id, ...) SELECT ... FROM vw_ofch_prepal_delta, vw_ab_bie WHERE bie_tp IN ('S[*]') AND is_most_recent = 1; 该语句的长度为 4.004 个字符。 该错误由 H2 指出为 [*](这不是语句的一部分)。 回答1 H2 不会在字符串文字中设置错误标记[*] 。 这意味着您很可能在早些时候的某个地方放错了'字符。 它可以是未闭合的字符串文字、某些字符串文字中未转义的'字符(如果字符串文字包含'字符,则应使用两个这样的字符编写,例如'' ),或者是杂散的'字符。 回答2 根据 H2 错误代码文档,您的查询中存在语法错误。 /** * The error with code <code>42000</code> is thrown when * trying to execute an invalid SQL statement. * Example: * <pre> * CREATE

2021-10-25 02:46:11    分类:技术分享    java   h2

如何在 H2 中定义 Oracle Package Procedure 进行测试(How to define Oracle Package Procedure in H2 for Testing)

问题 我正在测试一个将数据读/写到 Oracle DB 的 Spring Boot 应用程序。 这个 Oracle DB 有 Oracle 包和在这些包中的程序。 在某些时候,spring boot 应用程序通过实体存储库调用此过程,如下所示 @Repository public interface StudentRepository extends JpaRepository<Student, String> { @Modifying @Query(value = "begin sch1.STUDENT_PACKAGE.Set_Grades_To_A('A'); end;", nativeQuery = true) public void setStudentGradeToA(); } 所以,它采用了原生查询,以调用一个过程Set_GradesToA在STUDENT_PACKAGE中的包sch1架构。 我目前正在测试 Spring Boot 应用程序的功能,而不是它与 Oracle 数据库之间的集成。 因此,我决定暂时使用内存数据库 (H2)(带有 Oracle 兼容性选项)来替换 Oracle DB。 但是我怎样才能伪造出这些 java 包程序呢? 我尝试在我的 schema.sql(或 data.sql)中创建一个别名,如下所示: CREATE SCHEMA if not

2021-10-25 02:18:46    分类:技术分享    oracle   spring-boot   testing   plsql   h2

If using Hibernate with Database (and c3p0 dbpooling) is is still possible and safe to directly get connection bypassing Hibernate

Using Hibernate 4.3.11 with H2 1.4.199 and C3p0 If using Hibernate with Database is is still possible and safe to directly get connection from pool bypassing Hibernate? Im trying to write an sql query, now I know I can use session.createSQLQuery() but this returns a Hibernate org.hibernate SQLQuery class rather than a java.sql.Connection and this is causing a problem for me trying to set the parameters, so I wanted to try using a Connection instead.

2021-10-24 22:50:24    分类:问答    java   sql   hibernate   h2   c3p0

如何使用使用 bpchar 的 h2 数据库执行单元测试?(How to perform unit tests with h2 database where bpchar is used?)

问题 我有一个使用 postgres 数据库的 spring + hibernate 应用程序。 我需要为控制器编写单元测试。 对于测试,我想使用 h2 数据库,但不幸的是在 create-drop 期间测试崩溃,让我得到 bpchar 数据类型无效的信息。 我想知道如何解决这个问题,以便我可以运行测试。 我不能用 bpchar 将我的列更改为 varchar,它需要保持原样。 我也尝试设置 postgresql 模式,但没有帮助。 我唯一的解决方案是使用嵌入式 postgres 数据库来执行测试,还是我可以使用任何其他方法? 回答1 我唯一的解决方案是使用嵌入式 postgres 数据库来执行测试,还是我可以使用任何其他方法? 您尝试将 postgres 特定的数据类型与 h2 (它没有)一起使用。 当然,它不起作用。 如果您无法更改此字段的类型 - 在测试中使用嵌入式 postgres。 回答2 实际上,您可以在application.properties 中执行此操作以让 H2 知道: spring.datasource.url=jdbc:h2:mem:testdb;INIT=CREATE TYPE BPCHAR AS CHARACTER NOT NULL 还要确保为您的测试关闭数据库的自动配置。 您可以通过添加: @AutoConfigureTestDatabase

2021-10-24 22:43:03    分类:技术分享    java   spring   postgresql   testing   h2