zoukankan      html  css  js  c++  java
  • Hibernate同一性问题

    package com.cg.foo;
    
    // Generated 2012-7-19 11:40:57 by Hibernate Tools 3.4.0.CR1
    
    import java.util.Date;
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * TUser generated by hbm2java
     */
    public class TUser implements java.io.Serializable {
    
    	private long id;
    	private String name;
    	private String nickname;
    	private Date birthday;
    	private Set<TCard> TCards = new HashSet<TCard>(0);
    
    	public TUser() {
    	}
    
    	public TUser(long id) {
    		this.id = id;
    	}
    
    	public TUser(long id, String name, String nickname, Date birthday,
    			Set<TCard> TCards) {
    		this.id = id;
    		this.name = name;
    		this.nickname = nickname;
    		this.birthday = birthday;
    		this.TCards = TCards;
    	}
    
    	public long getId() {
    		return this.id;
    	}
    
    	public void setId(long id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return this.name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getNickname() {
    		return this.nickname;
    	}
    
    	public void setNickname(String nickname) {
    		this.nickname = nickname;
    	}
    
    	public Date getBirthday() {
    		return this.birthday;
    	}
    
    	public void setBirthday(Date birthday) {
    		this.birthday = birthday;
    	}
    
    	public Set<TCard> getTCards() {
    		return this.TCards;
    	}
    
    	public void setTCards(Set<TCard> TCards) {
    		this.TCards = TCards;
    	}
    	
    	@Override
    	public boolean equals(Object other) {
    		if(this==other)return true;
    		//if(id==null)return false;
    		if(!(other instanceof TUser))return false;
    		final TUser that = (TUser)other;
    		return this.id == that.id;
    	}
    
    	@Override
    	public int hashCode() {
    //		return id==null? System.identityHashCode(this):this.id.hashCode();
    		return (int)id;
    	}
    }
    
    
    
    
    package com.cg.test;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import org.hibernate.Session;
    import org.hibernate.tutorial.util.HibernateUtil;
    import org.junit.Test;
    
    import com.cg.foo.TUser;
    
    public class TestObjIdentityEqual {
    
    	@Test
    	public void test() {
    		Session session = HibernateUtil.getSessionFactory().openSession();
    		session.beginTransaction();
    		TUser a =(TUser) session.get(TUser.class	, 7L);
    		TUser b =(TUser) session.get(TUser.class	, 7L);
    		System.out.println("测试1个session的get对象同一性:");
    		System.out.println(a == b);	//true
    		
    		session.getTransaction().commit();
    		session.close();
    		
    		Session session2 = HibernateUtil.getSessionFactory().openSession();
    		session2.beginTransaction();
    		TUser c = (TUser) session2.get(TUser.class, 7L);
    		
    		System.out.println("测试两个session的get对象同一性:");
    		System.out.println(a == c);		//false: detached & persisted
    		
    		session2.getTransaction().commit();
    		session2.close();
    		
    		Set<TUser>	setAll =new HashSet();
    		setAll.add(a);
    		setAll.add(b);
    		setAll.add(c);
    		System.out.println(setAll.size());	//size:2
    		
    	}
    
    }
    

      

  • 相关阅读:
    转发和重定向的区别
    描述Session跟Cookie的区别(重要)
    JSP的4大域对象
    描述JSP的9大内置对象(不重要)
    描述JSP和Servlet的区别
    Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用
    Pytest系列(15)- 多重校验插件之pytest-assume的详细使用
    Pytest系列(14)- 配置文件pytest.ini的详细使用
    Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用
    Pytest系列(12)- 测试结果生成HTML报告插件之pytest-html的详细使用
  • 原文地址:https://www.cnblogs.com/wucg/p/2602125.html
Copyright © 2011-2022 走看看