草庐IT

java - 不在事务中时回滚 Spring JDBC 操作

我在SpringJDBC中使用注解驱动的事务管理。我想让Spring在错误地忘记使用@Transactional注释插入/更新/删除的服务方法时抛出异常。默认情况下,即使不在事务中也可以插入/更新/删除数据。 最佳答案 您可以在DAO层中使用Propagation.MANDATORY。Propagation.MANDATORY不会启动事务。它将检查特定方法是否附加到事务,如果没有,容器将抛出异常。 关于java-不在事务中时回滚SpringJDBC操作,我们在StackOverflow上

java - AuditingEntityListener 的 Spring JPA Hibernate CET 时区

我没有成功为我的JPA应用程序设置CET时区,该应用程序使用AuditingEntityListener来增加创建/上次修改日期。我已经尝试过的事情:在我的application.properties(两种组合)中:spring.jpa.properties.hibernate.jdbc.time_zone=UTC+1spring.jpa.properties.hibernate.jdbc.time_zone=CET将时区添加到我的JDBC连接(两种组合)spring.datasource.url=jdbc:mysql://host:3306/db?useUnicode=true&us

java - 没有从数据库返回行 - 但有记录要返回

我正在使用jdbcsybase驱动程序(jconn3)执行select语句。我检查了在isql上手动执行的语句,所有行都正确返回。在jdbc上执行的语句:select*frommytablewheredatebetween?and?我将日期格式添加为yyyy-MM-ddHH:mm:ss并将时间值设置为开始日期的00:00:00和结束日期的23:59:59。它不起作用。行数必须是1000,但有时是770,有时是990,有时是564等。没有每次返回的任何特定行数。之后我添加了一个额外的执行,它只返回行数。首先,我执行selectcount(*)from...语句,然后执行select*fr

java.sql.SQLException : Io exception: Socket read timed out vs Closed Connection 异常

我正在尝试研究有关连接到Oracle数据库的以下两个错误的问题:关闭连接java.sql.SQLException:Io异常:Socket读取超时我的理解:关闭连接:发生是因为存在某种网络中断或数据库由于某种“不活动”而关闭了sessionjava.sql.SQLException:Ioexception:Socketreadtimedout:这是连接成功建立但由于某种原因套接字/数据为空并最终超时的情况因为没有可用数据。是否可以在本地OracleDB环境中复制上述错误?步骤是什么?非常感谢您花时间回复。谢谢。 最佳答案 你对关闭连

java - "java.lang.ClassNotFoundException: oracle.jdbc.pooling.Factory"

我在使用ucp.jar时遇到了一些问题如果我将ucp.jar用于oracle12.1.0.1,它就可以工作。如果我使用oracle12.1.0.2的版本,则会出现以下异常:java.lang.ClassNotFoundException:oracle.jdbc.pooling.Factory有没有人可以帮助我?谢谢,毛罗 最佳答案 Jdbc(ojdbc7.jar)和UCP(ucp.jar)jar必须始终来自同一版本(12.1.0.2)。不升级另一个就不能升级一个。这个版本依赖是在12c中引入的。以前不是这样的。

java - 与 Statement 相比,使用 PreparedStatement 有什么缺点吗

我正在研究JDBC中Statement和PreparedStatement之间的差异,并看到了很多优点here和herePreparedStatement与Statement的比较。我的一些同事问为什么我们仍然需要Statement,为什么不反对使用PreparedStatement的优点。那么还有什么理由让我们在JDBCAPI中仍然保留Statement吗? 最佳答案 PreparedStatement用于处理动态SQL查询,其中Statement用于处理静态SQL查询。 关于java

java - postgres 中 ctid 的 JDBC 类型是什么?

我似乎无法在准备好的语句中设置正确的类型。这段代码:Stringsql="deletefromfoowherectid=?";PreparedStatementdeleteStmt=conn.prepareStatement(sql);deleteStmt.setString(1,"(0,43)");//selectctidfromfooshows(0,43)exists....inta=deleteStmt.executeUpdate();抛出这个异常:org.postgresql.util.PSQLException:ERROR:operatordoesnotexist:tid=c

java - PreparedStatement 的正确用法

假设我们有一个在数据库中写入日志消息的类。此类从代码的不同部分调用,并一次又一次地执行相同的INSERT语句。似乎是在调用使用PreparedStatement。但是我想知道它的正确用法是什么。即使每次调用方法时我都创建了一个新的PreparedStatement还是我应该将PreparedStatement作为类成员并且永不关闭,我是否仍能从使用它中获益,就像DBMS在每次执行时都使用相同的执行路径一样以便重新使用它并从中获益?现在,如果在这种情况下使用PreparedStatement获得好处的唯一方法是保持它作为类成员打开,那么同一个连接是否可以同时打开不同的PreparedSt

Java JDBC : Reply. 填充()

我有时会遇到以下异常:com.ibm.db2.jcc.b.gm:[jcc][t4][2030][11211][3.50.152]Acommunicationerroroccurredduringoperationsontheconnection'sunderlyingsocket,socketinputstream,orsocketoutputstream.Errorlocation:Reply.fill().Message:Connectionreset.ERRORCODE=-4499,SQLSTATE=08001问题是,代码成功执行了一段时间,然后突然出现这个异常。然而,当我再次运

java - 通过JBDC获取在IBM DB2 V6R1 (AS400)上插入的行数

我们最近迁移到AS400上较新的V6R1版本的DB2,我们使用Spring框架(v.2.5.6.)与数据库通信。我们正在调用Spring的NamedParameterJdbcTemplate.update()方法来插入新行,这个方法应该返回插入行的数量,但没有发生什么(结果我们得到零返回)虽然行被定期插入.我们得出的结论是,如果insert语句中没有主键列,一切正常,所以PK列自增时没有问题,但在某些情况下我们必须插入PK值,然后我们必须以某种方式应对定期出现的情况插入的行未在JDBC或Spring中注册。有人可以帮忙吗? 最佳答案