Auto的fulshMode,为什么查询前不自动清理缓存呢?

如下代码,flushMode是auto,为什么在执行query.lst() 的select时没有先自动执行user1入库的insert语句。
按照auto的FulshMode,应该在查询前,flush时,、commit时进行缓存清理的啊。

[code="java"]System.out.println("flushMode="+session.getFlushMode());
//Transaction tx=session.beginTransaction();

        User user1=new User();
        user1.setUserID(13000000);
        user1.setUserName("wa1");
        session.save(user1);



        Query query = session.createQuery("from query.common.User");
        List lst=query.list();

[/code]

2个回答

[url]https://hibernate.atlassian.net/browse/HHH-1410[/url]

When operating outside a transaction, FlushMode.AUTO is a bad thing.
Two options here:
1) no-op the autoFlush processing when outside a transaction
2) explicitly manage the Session's FlushMode setting when outside a transaction
#1 seems more viable, since Session.setFlushMode() might cause problems (or at least extra complexity) with #2

1、你是用的自动生成主键吗? 如果是 你改成assigned 或者看name=wa1的
user1.setUserID(13000000);

looyo
中国资深步行专家 已经发站内信给你了。谢谢 !
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian 我看看你怎么测试的
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian 能否把例子发我站内信
6 年多之前 回复
looyo
中国资深步行专家 后台没有insert语句,如果查询之后调用flush,insert语句出现在select之后。
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian 是很奇怪 你看看后台输出insert了吗? 是在select之后?
6 年多之前 回复
looyo
中国资深步行专家 没有具体指定。我刚才试验了,改用assigned 也不行。 ====================原先配置如下,手工设置主键值 userid================================ <hibernate-mapping> <class name="query.common.User" table="T_USER"> <composite-id > <key-property name = "userID" column = "USER_ID" type="java.lang.Integer"/> </composite-id>
6 年多之前 回复
jinnianshilongnian
jinnianshilongnian 那是 assigned ?
6 年多之前 回复
looyo
中国资深步行专家 不是自动生成主键。
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!