Tag: oracle

Spring Data JPA JpaRepository.save(实体)不返回数据库默认值

我有一个相当简单的问题。 在单个事务中,我的代码看起来像这样: MyClass c = new MyClass(); c.setPropA(“A”); c = myClassRepository.save(c); c.setPropC(“C”); 我的实体看起来像这样: @Entity @Table(name = “MY_CLASS”) public class MyClass { private String propA; private String propB; private String propC; @Id @Column(name = “PROP_A”, unique = true, nullable = false, updatable = false) public String getPropA() { return propA; } public void setPropA(String propA) { […]

使用Types.NVARCHAR和oracle JDBC驱动程序来处理Cyrillic字符

我正在尝试使用“JDK 1.6中的国家字符集类型数据的新方法” ,以获得处理西里尔字符的标准JDBC解决方案,但是当执行到达任何具有NVARCHAR类型的行时,例如: preparedSelect.setObject(3, “суббота”, Types.NVARCHAR); 然后我得到这个例外: java.sql.SQLException: Invalid column type at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:269) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:490) at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:7922) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:7502) at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:7975) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:222) 我也尝试使用setNString(),但我得到一个更奇怪的例外: java.lang.AbstractMethodError: oracle.jdbc.driver.OraclePreparedStatementWrapper.setNString(ILjava/lang/String;)V 如果我使用带有常规Types.VARCHAR的java -Doracle.jdbc.defaultNChar = true myApplication,则会正确存储俄语单词。 但是使用-Doracle.jdbc.defaultNChar = true不是一个选项,因为我正在处理遗留应用程序,我无法控制运行生产环境,我只是在编写一个组件。 此外,这篇“NChar How-to自述文件”指出“这种转换对性能产生了重大影响”。 因此,默认情况下,只有不到1%的表需要进行此转换而不是智能选择时,将所有内容设置为NChar。 我正在使用oracle瘦驱动程序,我的classpath中有ojdbc6.jar和orai18n.jar。 我正在寻找标准的JDBC解决方案。 我不能在它们上使用任何带有“oracle”的方法或常量。 OraclePreparedStatement对我来说不是一个选项。 我尝试使用Types.NVARCHAR与MSSQL Server,它运行正常。

在java中执行多个SQL语句

我想用Java执行查询。 我创建了一个连接。 然后我想执行一个INSERT语句,完成后,连接关闭,但我想通过连接执行一些insert语句,当循环完成然后关闭连接。 我能做什么 ? 我的示例代码是: public NewClass() throws SQLException { try { Class.forName(“oracle.jdbc.driver.OracleDriver”); } catch (ClassNotFoundException e) { System.out.println(“Where is your Oracle JDBC Driver?”); return; } System.out.println(“Oracle JDBC Driver Registered!”); Connection connection = null; try { connection = DriverManager.getConnection( “jdbc:oracle:thin:@localhost:1521:orcl1”, “test”, “oracle”); } catch (SQLException e) { System.out.println(“Connection Failed! Check output console”); return; } […]

ResultSet的Oracle JDBC性能

到目前为止,我一直在使用这样的查询我的数据库工作得非常好: PreparedStatement prepStmt = dbCon.prepareStatement(mySql); ResultSet rs = prepStmt.executeQuery(); 但后来我需要使用rs.first(); 为了能够多次迭代我的rs 。 所以我现在用 PreparedStatement prepStmt = dbCon.prepareStatement(mySql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 我的问题与两者的表现有关。 如果我使用第二个选项,我会失去什么? 使用第二个选项会对我到目前为止编写的代码产生任何负面影响吗? PS:请注意,我的应用程序是一个使用后端Oracle 11g数据库的多用户,数据库密集型Web应用程序(在Weblogic 10.3.4上)。 谢谢大家的关注。 UPDATE 我的最大重新设置大小将小于1000行和15-20列

使用Java为DB2和Oracle插入BLOB

我目前正在validation在Oracle for DB2上开发的应用程序。 由于我们不想维护两个单独的源,因此我需要一些查询来将blob插入到字段中,这在oracle和db2中都有效。 我没有任何标识符来区分运行应用程序的DB。 我在oracle中使用了utl_raw.cast_to_raw ,在DB2中使用了CAST() as BLOB ,它们是互不兼容的。

EntityManager.flush()在Java Web服务中提交事务

编辑 : 谢谢大家的答案,但问题出在我的数据源配置,实际上是在自动提交模式。 请参阅下面的答案了解详情。 EntityManager.flush()方法的Javadoc和在Google中搜索它似乎都表明flush方法只将挂起的语句发送到数据库并且不提交事务。 但是我创建的一个简单的测试Web服务(在Java 7中,Oracle 11gR2,JBoss 7.1和Web服务被打包为jar文件)似乎表明不是这样的: 这是表创建脚本: CREATE TABLE test( id INTEGER NOT NULL, name VARCHAR2(20), CONSTRAINT test_pk PRIMARY KEY (“ID”) ); CREATE SEQUENCE test_seq; 这是相应的实体: @Entity @Table(name = “TEST”) public class Test implements Serializable { private static final long serialVersionUID = 9192814682033048425L; @Id @Column(name = “ID”) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = […]

HSQL中缺少序列以进行测试

我有一个Oracle数据库,我必须使用序列作为主键。 这一切都很好,因为我可以控制序列号。 我的问题是我的测试。 使用Spring我创建一个HSQL数据库并对此进行测试。 通过查看我的所有实体来构建此数据库。 为了使用Oracle,我的所有实体都指定了一个序列名。 麻烦的是,当我构造HSQL数据库时,它无法找到序列(我期望)我的测试通过但是我最终在日志中有很多错误。 日志中充满了这些消息。 WARN JDBCExceptionReporter:233 – SQL Error: -5501, SQLState: 42501 ERROR JDBCExceptionReporter:234 – user lacks privilege or object not found: GENDERS_SEQ 有谁知道如何删除这些虚假错误? 我可以让HSQL忽略序列。 有趣的是,在测试中我可以插入HSQL数据库,因此它必须使用自己的内部主键生成器。 任何有关如何从日志中删除此瑕疵的想法? 谢谢

java.sql.SQLException:Ioexception:破坏管道如何在不重启的情况下恢复?

在我的应用程序中,我使用连接到Oracle,当连接丢失并且我尝试重新连接时收到exception: java.sql.SQLException: Io exception: Broken pipe at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273) at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:540) at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:264) at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:196) 对于恢复我需要重启应用程序,是否可以在不重启的情况下恢复? 谢谢。

如何将WebLogic Server配置为现有Eclipse

我刚刚安装了WebLogic Server。 但是在安装过程中,我忘记了设置Eclipse的路径,现在我使用新安装的Eclipse(来自oracle安装向导)。 如何配置Oracle WebLogic Server以使用我的Eclipse? PS我不想丢失我的设置和插件,我还不想安装我的所有插件并再次配置eclipse。

Oracle约会到Java日期

SimpleDateFormat用于解析Oracle日期的内容是什么? 我正在使用这个SimpleDateFormat。 SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy / mm / dd hh:mm:ss.sss”); 它给出了这个例外。 java.text.ParseException:Unparseable date:“2011-08-19 06:11:03.0” 请告诉我要使用的SimpleDateFormat。 谢谢。