oracle视图,mybatis select,从log中找到sql跟参数,直接在pl/sql里执行没问题,代码中出问题

大家不用看了!
找到原因了,在表B中通过pl/sql developer插入数据之后,没有commit,导致代码一直查不出来。。。。
这实在是。。。
重要的事情记三遍,pl/sql developer中执行dml语句,一定要commit或者rollback才行.
pl/sql developer中执行dml语句,一定要commit或者rollback才行.
pl/sql developer中执行dml语句,一定要commit或者rollback才行.

pl/sql developer中执行dml语句,一定要commit或者rollback才行.


表 A

id a b c
110 Atest as dd
111 Btest as dd
112 Btest as dd

表 B

id a
111 Btest

视图:

  CREATE OR REPLACE VIEW V_A AS
  SELECT t1.* FROM A t1
    WHERE t1.a_CODE LIKE 'A%'
  UNION 
SELECT t2.* FROM ORDER_USER t2,WHITE_ORDER_USER WU WHERE t2.ID=WU.ID;

最后在mybatis中查询V_A:

select id,a,b,c from V_A where id=#{id};

意思是:查询所有表A中字段a以A开头的所有记录,并且表B中存储了一些表A中的记录,但是表B中字段a未必以A开头(也就是表B相当于一个白名单)。

log中可以看到sql语句为select id,a,b,c from V_A where id=?,参数传111或者110,
结果,java代码中可以正常查出记录110,但是查不出记录111。

而在pl/sql developer中可以直接用sql查询出两条记录。

请问有没有遇到过这种问题的。

阅读 2.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题