如何在Java编程中检索带有汉字的记录?

如何在Java编程中检索带有汉字的记录?,java,oracle,unicode,gbk,Java,Oracle,Unicode,Gbk,我在Java中检索带有汉字的记录时遇到问题。这是我的密码: EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory.createEntityManager(); Query query = entitymanager.createQuery("Select e from Employe

我在Java中检索带有汉字的记录时遇到问题。这是我的密码:

EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager();

Query query = entitymanager.createQuery("Select e from Employee e where e.id = " + empId);
Employee employee = query.getSingleResult();

if (employee != null)
{
    System.out.println(employee.getChineseName());
    System.out.println(employee.getChineseAddress());
}

当程序执行SQL语句时,会弹出错误:“java.SQL.SQLException:无法将Oracle字符映射到Unicode”。如果我检索到一条没有汉字的记录,该程序运行良好。我的数据库是Oracle,中文字符在数据库中。我该如何解决这个问题?

您是否尝试过直接调用JDBC,而没有所有JPA复杂性作为测试?我发现很难相信Oracle中存在一个包含Unicode中不存在的代码点的字符集。因此,我强烈怀疑,JPA在某处告诉Oracle使用错误的字符集解释数据。但我对JPA不够熟悉,无法告诉您应该在哪里查找。您应该同时使用参数化查询和泛型。