JPA 实体 CLOB 列用于测试的不同数据类型
JPA Entity CLOB column different data type for testing
我正在使用 Hibernate 和 Hikari 池持久化 CLOB 数据。测试时我正在使用 HSQL 内存数据库。但是生产我正在使用其他数据库。 CLOB 的 java 数据类型是 HSQL DB 的字符串。但我的真实环境 DB 数据类型是 byte[]。我正在使用 Arquillian 进行测试。
如何使用 byte[] 数据类型进行主编码,使用字符串数据类型进行测试?
我试过 Alternative,但它不起作用,我也试过 Specializes,但不走运。
@Entity
class Article {
@Id
private long id;
@Lob
@Column(name="data", columnDefinition = "CLOB")
private byte[] data;
}
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-hikaricp</artifactId>
<version>5.3.7.Final</version>
</dependency>
测试时如何解决这个数据类型问题?
如果您不访问 SQL 查询中的数据字符串的内容,您可以使用 BLOB 或 BINARY 作为 HSQLDB 中的数据类型。
由于我的生产数据库和测试数据库不同,并且 Java 面临的 CLOB 数据类型在两个数据库中都不同。
create.sql
create table article (id integer,data binary(500));
我创建了不同的测试模式并通过 persistence.xml 加载了这些模式。我在 persistence.xml 中做了以下配置以单独测试。
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.create-source" value="script"/>
<property name="javax.persistence.schema-generation.create-script-source" value="schema/create.sql"/>
<property name="javax.persistence.schema-generation.drop-source" value="script"/>
<property name="javax.persistence.schema-generation.drop-script-source" value="schema/drop.sql"/>
所有创建 table 架构在 create.sql 中可用,删除 table 架构在 drop.sql 中可用。
现在工作很好。
我正在使用 Hibernate 和 Hikari 池持久化 CLOB 数据。测试时我正在使用 HSQL 内存数据库。但是生产我正在使用其他数据库。 CLOB 的 java 数据类型是 HSQL DB 的字符串。但我的真实环境 DB 数据类型是 byte[]。我正在使用 Arquillian 进行测试。
如何使用 byte[] 数据类型进行主编码,使用字符串数据类型进行测试?
我试过 Alternative,但它不起作用,我也试过 Specializes,但不走运。
@Entity
class Article {
@Id
private long id;
@Lob
@Column(name="data", columnDefinition = "CLOB")
private byte[] data;
}
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-hikaricp</artifactId>
<version>5.3.7.Final</version>
</dependency>
测试时如何解决这个数据类型问题?
如果您不访问 SQL 查询中的数据字符串的内容,您可以使用 BLOB 或 BINARY 作为 HSQLDB 中的数据类型。
由于我的生产数据库和测试数据库不同,并且 Java 面临的 CLOB 数据类型在两个数据库中都不同。
create.sql
create table article (id integer,data binary(500));
我创建了不同的测试模式并通过 persistence.xml 加载了这些模式。我在 persistence.xml 中做了以下配置以单独测试。
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.create-source" value="script"/>
<property name="javax.persistence.schema-generation.create-script-source" value="schema/create.sql"/>
<property name="javax.persistence.schema-generation.drop-source" value="script"/>
<property name="javax.persistence.schema-generation.drop-script-source" value="schema/drop.sql"/>
所有创建 table 架构在 create.sql 中可用,删除 table 架构在 drop.sql 中可用。
现在工作很好。