还是需要为JPA / Oracle NCHAR NVARCHAR的预准备语句参数调用setFormOfUse()吗?

时间:2016-12-02 17:12:16

标签: oracle hibernate jpa nvarchar

我正在处理使用JPA的遗留代码,其中代码仍然为NCHAR,NVARCHAR类型的每个数据库参数调用setFormOfUse()。

  • 我知道有一段时间需要这样做。
  • 我知道 那之后有一段时间可以调整默认值 设置,以便不必为每个绑定进行控制。

是否仍需要使用最新的JDBC驱动程序在此时(2016年12月)调用setFormOfUse()?从哪个JDBC / Oracle版本可以做什么?我只能找到与版本无关的信息片段。

修改1 - 相关问题

编辑2 - JDBC Spec

我搜索了JDBC规范并找到了这些信息:

  • JDBC 3.0(JSR 54; 2002)NCHAR,NVARCHAR,NCLOB,......中没有任何内容......
  • JDBC 4.0(JSR 221; 2006)这提到了setNString()等。因此,'setNString'可以取代'setUseOf'的最早年份将是2006年。所以我现在将看看2006年的Hibernate版本和Oracle驱动程序版本,以找到最早的setNString支持(如果支持的话)。

编辑3 - 结论

结论

  • 从Oracle ojdbc-11.2.0.2(2010年8月)及更高版本,您可以使用标准JDBC'setNString()'而不是Oracle特定的'setFormOfUse()'。
  • 如果使用Hibernate ORM,则从4.1.10及更高版本开始支持。

影响

  • 如果使用ojdbc-11.2.0.1(2009年7月),您应该编写自己的OracleDialect并显式调用'setFormOfUse()'。
  • 如果使用ojdbc-11.2.0.2(2010年8月)或更高版本+ Hibernate< 4.1.10你必须编写自己的OracleDialect并调用'setNString()'。
  • 如果使用ojdbc-11.2.0.2或更高版本+ Hibernate> = 4.1.10,则无需执行任何操作,转换将立即生效。

0 个答案:

没有答案