Tomcat / Oracle-查询仅在索引列中显示更新的信息

时间:2019-05-13 21:34:43

标签: java oracle tomcat

如果这看起来很琐碎,我深表歉意,但是我似乎找不到任何解决该问题的方法。我在Tomcat服务器上有一个Java webapp,该服务器在webapp上下文(JNDI)中配置了Oracle Database 12c。没有使用任何特殊的框架(例如Spring),仅使用java.sql和javax.sql程序包中的所有内容。

在Web应用程序中,如果在索引的列中更改了数据,则重新运行查询时,更改将显示在Web应用程序中。如果对未索引的列进行了更改,则不会显示更改(但是,如果直接检查表或回收Tomcat并进行检查,则数据会更改)。这些查询只是简单的更新查询,没有什么复杂的。

我认为这与Tomcat共享会话的方式有关,如果您回收Tomcat服务器(停止/启动),则会显示更改。

这是上下文配置(仅是资源部分):

<resource
    name="jdbc/database"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@database.address.com:1521:sid"
    username="user"
    password="pass"
    maxActive="100"
    maxIdle="10"
    minIdle="3"
    testWhileIdle="true"
    validationQuery="select 1 from dual"
    validationInterval="34000"
    timeBetweenEvictionRunsMillis="34000"
    numTestsPerEvictionRun="10"
    minEvictableIdleTimeMillis="50000"
    removeAbandoned="true"
    removeAbandonedTimeout="60"
    logAbandoned="true"
    testOnBorrow="true"
/>

我已经读过有关语句缓存的信息,但是我不确定语句缓存是否会成为问题,只是结果似乎已缓存,并且不会在正在重新运行的查询中更新(除非语句缓存存储了此信息,我以为它们只是查询本身,而不是结果集。无论如何,是否有强迫数据库连接不对Oracle使用旧结果的方法?

感谢您的帮助。

0 个答案:

没有答案