草庐IT

java - 如何使用 Hibernate 将 java.time.LocalDateTime 映射到 H2 数据库中的 TIMESTAMP?

我有一个基于Java8构建的项目。我有一个实体和java.time.LocalDateTimecreationDate属性。在数据库中,该列是TIMESTAMP以与Oracle保持一致。不幸的是,默认情况下H2数据库将LocalDateTime视为BINARY值。当查询被触发时,应用程序失败并在LocalDateTime属性和TIMESTAMP列之间进行转换。如何强制H2将LocalDateTime转换为TIMESTAMP列而不是BINARY?编辑:看起来这不是H2问题,而是来自Hibernate(v.5.0.12)。即使在这里:https://www.thoughts-on-java

java - H2 数据库 : referring to a table in root schema from a foreign key constraint

给定根架构中的表:CREATETABLEuser(usernameVARCHAR(50),passwordVARCHAR(50));和Quiz模式中的表:CREATETABLEQuiz.Results(usernameVARCHAR(50),pointsINT,FOREIGNKEY(username)REFERENCESuser(username));我无法实际创建外键,因为数据库声称表user实际上并不存在。我也不能随后添加外键:ALTERTABLEQUIZ.RESULTSADDFOREIGNKEY(username)REFERENCESuser(username)当然,这两个表都存

java - 在 h2 中重置自动增量

我正在测试一个返回json响应的Controller,但是测试第一次失败,因为h2数据库没有重置自动递增ID。使用夹具或手动创建对象有同样的问题。@BeforepublicvoidsetUp(){Fixtures.deleteAllModels();Fixtures.loadModels("data.yaml");}如何解决这个问题? 最佳答案 启动您的play应用程序,使用此url启动浏览器(如果您在本地运行play应用程序):http://localhost:9000/@db输入您的h2数据库,然后键入以下命令并运行:ALTER

java - hibernate h2 可嵌入列表预期为 "identifier"

我正在尝试在我的员工实体中关联一个函数列表(可嵌入),而H2似乎对这种期望“标识符”的说法不满意Causedby:org.h2.jdbc.JdbcSQLException:SyntaxerrorinSQLstatement"CREATETABLEEMPLOYEE_FUNCTIONS(EMPLOYEE_EMPLOYEEIDVARCHAR(255)NOTNULL,ACTIVEBOOLEANNOTNULL,DEPARTMENTNUMBERINTEGERNOTNULL,DESCRIPTIONVARCHAR(255),ORDER[*]INTEGERNOTNULL)";expected"ident

java - org.h2.jdbc.JdbcSQL异常 : Schema "MYAPP" not found; SQL statement

我正在尝试将H2数据库与sprintjunit测试一起使用,如下所示:1-SpringTestingConfig:@Configuration@ComponentScan(basePackages="com.myapp.data",excludeFilters={@Filter(Configuration.class)})@PropertySource("classpath:/test.properties")@Profile("test")publicclassSpringTestingConfig{@BeanpublicDataSourcedataSource(){DriverMa

java - 如何使用 TestNg 对 Hibernate、H2 进行测试?

什么是测试DAO层的正确方法?我在创建和销毁SessionFactory时使用了@BeforeMethod和@AfterMethod注释方法,但它不适用于多个测试。如果测试一个接一个地运行,但当它们一起运行时没有使用maven构建,所以我决定我应该使用TestNg组对它们进行分组并执行@BeforeGroup和@AfterGroup方法,其中我对Hibernate做了同样的事情。所以我做了这样的事情:@Test(groups={"integration"})publicclassIntegrationTest{protectedSessionFactorysessionFactory;

java - 向外部 H2 数据库添加聚合函数

我正在尝试使用Java在我的H2数据库中创建一个聚合函数。该函数应从给定的Double列返回自定义中值计算。此计算包括仅使用足够接近使用max_varianceint值的平均值的值。为此,我创建了类:packagecustommedian;publicclassCustomMedianimplementsorg.h2.api.AggregateFunction{finalintmax_variance=7;java.util.LinkedListvalues=newjava.util.LinkedList();@Overridepublicvoidinit(java.sql.Conne

java - 更改序列 H2DB 的数据类型

我需要更改存储到H2DB中的序列的返回值,当我通过直接SQL查询调用nextVal时,H2返回一个BigInt并且我需要一个BigDecimal。我无法转换或转换这个值,我需要H2返回一个BigDecimal。我该怎么做?编辑:我无法更改Java代码,因为我正在测试,因此无法转换或转换来自DB的请求值。 最佳答案 如果允许替换H2jar文件,您可以创建自己的H2补丁版本。在org.h2.expression.Function中更改addFunctionNotDeterministic("NEXTVAL",NEXTVAL,VAR_AR

java:在 H2 中的 executeBatch() 之后检索键

我正在尝试从executeBatch()事务中检索生成的key,但我只获得了要添加的最后一个key。这是我的代码:PreparedStatementps_insert=conn.prepareStatement(insertQuery,PreparedStatement.RETURN_GENERATED_KEYS);for(inti=0;i我做错了什么?编辑:很抱歉没有提到我在嵌入式模式下使用H2(http://www.h2database.com/html/main.html)数据库。 最佳答案 根据H2jdbcdriverjav

java - H2 数据库 : How to have lowercase for tablename?

我想将所有表名都保留为小写。示例人我使用Liquibase设置我的数据库,它看起来像AddPersonTable我使用H2数据库来运行我的集成测试并在pom.xml中设置为cargo.datasource.driver=${h2.driver}|cargo.datasource.url=${datasource.url}|cargo.datasource.jndi=${datasource.jndi}|cargo.datasource.username=${h2.user}|cargo.datasource.password=${h2.user}datasource.url看起来像jd