亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

getCurrentSession打印出的hashCode不同

Configuration?config?=?new?Configuration().configure();
		ServiceRegistry?serviceRegistry?=?new?ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
		SessionFactory?sessionFactory?=?config.buildSessionFactory(serviceRegistry);
		Session?session1?=?sessionFactory.getCurrentSession();
		Transaction?transaction?=?session1.beginTransaction();
		Student?s?=?new?Student("張三",?"男",?new?Date(),?"北京");
		session1.doWork(new?Work()?{
			@Override
			public?void?execute(Connection?connection)?throws?SQLException?{
				System.out.println("session1的hashcode:"+connection.hashCode());
			}
		});
		session1.save(s);
		transaction.commit();
		
		Session?session2?=?sessionFactory.getCurrentSession();
		transaction?=?session2.beginTransaction();
		s?=?new?Student("李四",?"男",?new?Date(),?"上海");
		session2.doWork(new?Work()?{
			@Override
			public?void?execute(Connection?connection)?throws?SQLException?{
				System.out.println("session2的hashcode:"+connection.hashCode());
			}
		});
		session2.save(s);
		transaction.commit();

按理說兩次打印的hashCode應該相同

但我打印出的不一樣

session1的hashcode:1574258553

session2的hashcode:1774088918

求大神幫看下,我代碼錯了么?

正在回答

4 回答

我目前知道的是:因為你第一個session關閉了,所以內存已經結束了。下一個session是獲取不到的。所以hashcode會不一樣。但是我看了視頻的時候,發現老師也是這樣寫 居然一樣,我震驚了。

因為session是在commit();后自動關閉的,你可以試試 ?在commit前再弄個session,輸出的hashcode是一樣的。如果有新發現可以聯系我。愿意分享心得。

1 回復 有任何疑惑可以回復我~
#1

xiele 提問者

牛!貌似是這個問題,學到新東西了,謝謝!
2016-03-21 回復 有任何疑惑可以回復我~
#2

zqdip

為什么會是這樣?
2017-09-22 回復 有任何疑惑可以回復我~

但是放到前面,會提示session?is?closed,第二個沒有辦法執行了

0 回復 有任何疑惑可以回復我~

是的,執行Junit測試的時候要選定特定的方法名。

0 回復 有任何疑惑可以回復我~

我的也是相同的額。。。你的代碼看了下,似乎也是對的啊。。。而且用你的代碼測試過了。也是相同的。我懷疑是不是在執行test的時候,你選錯測試方法了?選了openSession那個。。

0 回復 有任何疑惑可以回復我~

我的也相同欸,不明覺厲

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

getCurrentSession打印出的hashCode不同

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號