我有一个长时间运行的功能,应插入新行.如何查看此功能的进度?
我认为脏读将起作用所以我阅读http://www.postgresql.org/docs/8.4/interactive/sql-set-transaction.html并提出以下代码并在新会话中运行它:
SET SESSION CHARACTERISTICS AS SERIALIZABLE;
SELECT * FROM MyTable;
Run Code Online (Sandbox Code Playgroud)
Postgres给我一个语法错误.我究竟做错了什么?如果我做对了,那么当长函数仍在运行时,我会看到插入的记录吗?
谢谢
我有一些方法,我正在尝试单元测试.这些方法使用Spring JdbcTemplates对DB2 v8运行正常(在生产中).
每个SQL通过在语句中附加"WITH UR"来允许"脏读".此外,它们中的一些通过添加例如"FETCH FIRST 1 ROWS ONLY"来使用"限制".
这对于真正的DB2工作正常,但我想对内存数据库进行单元测试 - 这就是H2进入的地方.
如果我删除"WITH UR"和"FETCH FIRST ..",一切正常,但我不想更改方法,只需更改后端数据库.
据我所知,这不是直接使用H2,因为语法不同(虽然我使用MODE = DB2).
现在,该怎么办?我应该/可以使用另一个内存数据库吗?我不想改变方法,也不想添加"测试"功能/黑客,所以这是不行的.
想法和同样非常感谢!
编辑
我不确定它是我还是什么,但我得到以下错误.注意,我使用的是Spring 3.1和H2 1.3.166,数据库的url是"jdbc:h2:〜/ testdb; MODE = DB2".我不知道它为什么会失败,因为sql在H2控制台中运行时起作用,但不是来自我的单元测试(猜测它不是H2坏了):
Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.109 sec <<< FAILURE!
getAdvisor(impl.AdvisorServiceDaoImplTest) Time elapsed: 0.078 sec <<< ERROR!
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM ADVISOR FETCH FIRST 1 ROWS ONLY ]; nested exception is org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT * FROM ADVISOR FETCH[*] …Run Code Online (Sandbox Code Playgroud) 如何ArrayList在Java中执行脏检查?
我有一个对象
Animal
{
String animalName;
String animalType;
String animalPlace
}
Run Code Online (Sandbox Code Playgroud)
我有两个清单:
List<Animal> animalList1 = new ArrayList<Animal>();
List<Animal> animalList2 = new ArrayList<Animal>();
Run Code Online (Sandbox Code Playgroud)
在第一个列表中,我有值:
[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Zimbabwe]
Run Code Online (Sandbox Code Playgroud)
在第二个列表中,我有以下值:
[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)
在第二个清单中,animalPlace索引2的元素已从津巴布韦变为挪威.如何比较两个列表值和已更改的值将该对象放在单独的列表中?
List<Animal> animalList3 = new ArrayList<Animal>();
[0] [Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)
通过使用for循环比较列表,我知道传统的方法:
for (int i = 0; i < list1.size(); i++)
{
for (int j = i+1; j < list2.size(); j++)
{
// compare list1 and list2 values
}
}
Run Code Online (Sandbox Code Playgroud)
有更快更好的方式吗?