Hibernate中清除持久化状态对象失效

调用session.clear()或者session.evict(obj)皆无法清除Hibernate中的持久化状态的对象


目前已知的情况是:


当主键使用identify策略时,session.save(person)调用完成后会发出INSERT语句


当主键使用increment策略时,不会发出INSERT语句,并且结果与预期一致


代码如下:


@Test

public void test1(){

    Session session = sessionFactory.openSession();

    Transaction transaction = session.beginTransaction();

    

    Person person = new Person();

    person.setName("tom888");

    session.save(person);    //此处是否发出**INSERT**语句与主键策略有关

    

    session.evict(person);

//  session.clear();

    transaction.commit();

    session.close();

}

主键使用identify策略时,代码执行结果:


log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

Hibernate: insert into Person (name, description) values (?, ?)

https://img3.mukewang.com/5cc178d100015b3a07670117.jpg


我期待的结果应该是数据不应该有任何变化才对,也不应该执行任何SQL语句,因为我调用了session.clear()或者session.evict(obj)时,person应该由持久化状态转为游离状态,期待您的回答!


叮当猫咪
浏览 422回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java