随着Hibernate 6的发布,我再次绞尽脑汁试图弄清楚如何让 Hibernate 将@Lob转换为PostGres数据库的bytea。我还需要可以使用 H2(或任何内存数据库)测试代码。
我正在使用 Postgres 10+ (v13),因此可以满足该要求。
这是我之前使用的,这很棘手,因为我还需要它与 H2 一起工作。(PostGres 方言仅在生产中加载,不在测试中加载。)
遗憾的是,让 bytea 工作“超出了 Hibernate 6 用户指南的范围”。见 2.2.47。 https://docs.jboss.org/hibernate/orm/6.0/userguide/html_single/Hibernate_User_Guide.html
迁移指南似乎也没有提及这个话题。 https://github.com/hibernate/hibernate-orm/blob/6.0/migration-guide.adoc
SQLDialect 系列的整个 API 已被重写,所以我回到了方 1。
public class CustomPostgresSQL10Dialect extends PostgreSQL10Dialect{
public CustomPostgresSQL10Dialect() {
super();
registerColumnType(Types.BLOB, "bytea");
}
@Override
public SqlTypeDescriptor remapSqlTypeDescriptor(SqlTypeDescriptor sqlTypeDescriptor) {
if (sqlTypeDescriptor.getSqlType() == java.sql.Types.BLOB) {
return BinaryTypeDescriptor.INSTANCE;
}
return super.remapSqlTypeDescriptor(sqlTypeDescriptor);
}
}
Run Code Online (Sandbox Code Playgroud) 我有这两步bash命令:
L=`wc -l testfile | cut -d' ' -f1`
myprogram testfile $L testfile.out
Run Code Online (Sandbox Code Playgroud)
长话短说,myprogram需要将行数作为输入.
我想把它组合成一行.
这并没有工作,因为使用的是重定向|到-通行证标准输出流作为一个文件,而不是一个字符串.
wc -l testfile | cut -d' ' -f1 | myprogram testfile - testfile.out
Run Code Online (Sandbox Code Playgroud)
有没有办法将它组合成一行?