Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring中使用JPA在Oracle上可重复读取_Java_Jpa_Oracle11g_Spring Annotations - Fatal编程技术网

Java Spring中使用JPA在Oracle上可重复读取

Java Spring中使用JPA在Oracle上可重复读取,java,jpa,oracle11g,spring-annotations,Java,Jpa,Oracle11g,Spring Annotations,当我尝试使用spring注释将隔离级别设置为Oracle DB上的可重复读取时,我得到: java.sql.SQLException:READ_COMMITTED和SERIALIZABLE是唯一有效的事务级别。-(ORA-17030) 这是解决这个问题的一种方法 @Transactional(isolation = Isolation.REPEATABLE_READ) @Override public List<ToMq> getAndChange1000NotForwarded()


当我尝试使用spring注释将隔离级别设置为Oracle DB上的可重复读取时,我得到:
java.sql.SQLException:READ_COMMITTED和SERIALIZABLE是唯一有效的事务级别。-(ORA-17030)

这是解决这个问题的一种方法

@Transactional(isolation = Isolation.REPEATABLE_READ)
@Override
public List<ToMq> getAndChange1000NotForwarded() {
    String queryText = "SELECT c FROM ToMq c WHERE c.forwarded = 0 AND";
    TypedQuery<ToMq> query = em.createQuery(queryText, ToMq.class);
    query.setMaxResults(1000);
    List<ToMq> resultList = query.getResultList();

    Date current = new Date();
    for (ToMq toMq : resultList) {
        toMq.setForwarded(Boolean.TRUE);
        toMq.setForwardTimestamp(current);
    }
    save(resultList);

    return resultList;
}
@Transactional(隔离=隔离。可重复读取)
@凌驾
公共列表getAndChange1000NotForwarded(){
String queryText=“从ToMq c中选择c,其中c.forwarded=0和”;
TypedQuery query=em.createQuery(queryText,ToMq.class);
query.setMaxResults(1000);
List resultList=query.getResultList();
当前日期=新日期();
for(ToMq-ToMq:resultList){
toMq.setForwarded(Boolean.TRUE);
toMq.setForwardTimestamp(当前);
}
保存(结果列表);
返回结果列表;
}

ORA-17030错误消息是由Oracle JDBC驱动程序生成的JDBC错误消息。根据文档,支持以下数据库事务隔离级别:

  • 读取已提交(默认)
  • 可序列化
  • 只读

因此,无法对Oracle数据库强制执行可重复读取(ANSI/ISO)隔离级别。

ORA-17030错误消息是由Oracle JDBC驱动程序生成的JDBC错误消息。根据文档,支持以下数据库事务隔离级别:

  • 读取已提交(默认)
  • 可序列化
  • 只读

因此,不可能对Oracle数据库强制执行可重复读取(ANSI/ISO)隔离级别。

您听到了数据库。如果它不支持
REPEATABLE\u READ
,你就不能拥有它。我想它可能是JPA和Spring或者驱动程序不支持那种隔离级别。
ORA-17030
是oracle错误,而不是JPA、Spring或者驱动程序错误。你听到了数据库。如果它不支持
REPEATABLE\u READ
,你就不能拥有它。我想它可能是JPA和Spring或者驱动程序不支持隔离级别。
ORA-17030
是oracle错误,而不是JPA、Spring或者驱动程序错误。您好。在这种情况下,有没有办法告诉Spring使用默认事务隔离?谢谢。您是说Oracle DB的“Read Committed”作为默认事务隔离吗?如果是的话,那就是你要走的路。你好。在这种情况下,有没有办法告诉Spring使用默认事务隔离?谢谢。您是说Oracle DB的“Read Committed”作为默认事务隔离吗?如果是的话,那就是你要走的路。