`

Hibernate annotation 一对多,多对一

 
阅读更多

 

package com.hibernate.entity;

import java.io.Serializable;


@Entity
public class Tgroup implements Serializable {
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1158932874414375265L;

	private int id;
	
	private String name;
	
	private Set<Tuser> tUsers = new HashSet<Tuser>();

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@OneToMany(mappedBy="tgroup")//如果不写mappedBy,那么tuser表中,将会有两个groupid,一个是groupid,一个是tgroup_id
	//一对多的时候,按经验,最好写mappedBy。"tGroup"是TUser表中的tGroup字段
	public Set<Tuser> gettUsers() {
		return tUsers;
	}

	public void settUsers(Set<Tuser> tUsers) {
		this.tUsers = tUsers;
	}
	
}

 

 

package com.hibernate.entity;

import java.io.Serializable;

@Entity
public class Tuser implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -635427302186865965L;
	
	
	private int id;
	
	private String name;
	
	private Tgroup tgroup;

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
	@ManyToOne
	@JoinColumn(name="groupid")//这样,在Tuser表中,就有一个groupid的外键与Tgroup表的id关联
	public Tgroup getTgroup() {
		return tgroup;
	}

	public void setTgroup(Tgroup tgroup) {
		this.tgroup = tgroup;
	}

	
	
}

 

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

	<session-factory>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="connection.url">
			jdbc:mysql://localhost/test
		</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>

		<!-- JDBC connection pool (use the built-in) -->
		<property name="connection.pool_size">1</property>



		<!-- Enable Hibernate's automatic session context management -->
		<property name="current_session_context_class">thread</property>

		<!-- Disable the second-level cache  -->
		<property name="cache.provider_class">
			org.hibernate.cache.NoCacheProvider
		</property>

		<!-- Echo all executed SQL to stdout -->
		<property name="show_sql">true</property>

		<property name="format_sql">true</property>
		<!--
			<mapping class="com.hibernate.entity.Husband" />
			<mapping class="com.hibernate.entity.Wife" />
		-->
		<mapping class="com.hibernate.entity.Tgroup" />
		<mapping class="com.hibernate.entity.Tuser" />
	</session-factory>

</hibernate-configuration>
 

 

package com.hibernate.test;


import org.hibernate.SessionFactory;

public class ORMappingTest {
	
	private static SessionFactory sessionFactory;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		sessionFactory.close();
	}
	
	@Test
	public void testSchemaExport() {
		new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics