我在 PostgreSQL 数据库中有一个函数,可以在服务器中搜索纯 txt 文件并处理文件中的数据。LATIN1
由于上传的文件格式 ( SET client_encoding ='LATIN1';
) ,SQL 函数会更改客户端编码。当我在本地(使用 PgAdmin)执行该函数时,它可以工作,但是当我使用 JPA Native Query 执行该函数时,我收到此错误:
Internal Exception: org.postgresql.util.PSQLException: The server's client_encoding parameter was changed to LATIN1. The JDBC driver requires client_encoding to be UTF8 for correct operation.
这是我的 JPA 函数:
public boolean importFile() {
boolean res = false;
try {
getEntityManager().getTransaction().begin();
getEntityManager().createNativeQuery("SELECT import()").executeUpdate();
getEntityManager().getTransaction().commit();
res = true;
} catch (Exception e) {
e.printStackTrace();
getEntityManager().getTransaction().rollback();
System.err.println("Error: " + e.getMessage());
}
return res;
}
如果重要的话,我使用的是 EclipseLink(JPA 2.1)、JSF 2.2 (PrimeFaces 6.1)、PostgreSQL 9.5.8。