当前位置:首页 > 开发 > 编程语言 > Hibernate > 正文

Hibernate配置复合主键 composite primary key (二)

发表于: 2013-11-27   作者:alleni123   来源:转载   浏览次数:
摘要: 摘自圣思园Hibernate 26.组件映射深度解析 上一篇讲了如何通过配置Student实现Serializable接口来实现复合主键查询。 http://alleni123.iteye.com/admin/blogs/1981608 这里要讲一下如何通过 组件来完成同样的功能。 先新建一个StudentPrimaryKey.java package comp
摘自圣思园Hibernate 26.组件映射深度解析

上一篇讲了如何通过配置Student实现Serializable接口来实现复合主键查询。
http://alleni123.iteye.com/admin/blogs/1981608


这里要讲一下如何通过 组件来完成同样的功能。

先新建一个StudentPrimaryKey.java
package composite_primary;

import java.io.Serializable;

public class StudentPrimarykey implements Serializable
{
	private String cardId;
	private String name;
	

	@Override
	public int hashCode()
	{
		...
	}
	@Override
	public boolean equals(Object obj)
	{
		...
	}
	
	
}


也就是把之前的Student类的cardId和name放到了这里,并在这个类中重载了这两个元素的hashCode和equals方法。
然后再把Student.java改一下:

public class Student 
{	 
	private StudentPrimarykey pri;
	
	private int age;
}


最后是Student.hbm.xml

<hibernate-mapping package="composite_primary">
	<class name="Student" table="test_student">
	
	<!-- composite-id表示复合主键 -->
	<!-- name表示Student类中用于表示联合主键的元素的名字 -->
	<composite-id name="pri" class="StudentPrimarykey">
		<!-- key-property表示组成主键的元素 -->
		<key-property name="cardId" column="card_id" type="string"/>
		<key-property name="name" column="name" type="string"/>
		
	</composite-id>
	 
	 
	 <property name="age" column="age" type="int"/>
	 
	  
	</class>



</hibernate-mapping>


最后执行configure(),生成SQL语句:

create table test_student (card_id varchar2(255 char) not null, name varchar2(255 char) not null, age number(10,0), primary key (card_id, name));

和上一篇的SQL语句时完全一样的。



插入

Session session=HibernateUtil.openSession();
		
  		 
 		Transaction tx=session.beginTransaction();
 		
 		StudentPrimarykey key1=new StudentPrimarykey("111", "alleni");
 		
 		Student s1=new Student();
 		s1.setPri(key1);
 		s1.setAge(22);
 		
 		
 		StudentPrimarykey key2=new StudentPrimarykey("222", "eline");
 		Student s2=new Student();
 		s2.setPri(key2);
 		s2.setAge(33);
 		
 
		session.save(s1);
		session.save(s2);
		
		tx.commit();



查询

		Session session=HibernateUtil.openSession();
		
		
		StudentPrimarykey key1=new StudentPrimarykey("111", "alleni");
		
		
		
		
		Student s=(Student) session.get(Student.class,key1);
		
		System.out.println(s.getAge()); //22



Hibernate配置复合主键 composite primary key (二)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在使用hibernate时有时会碰到配置复合主键和使用,例如下面表就是使用了一个复合主键的 那么在配置h
Hibernate中除了使用<generator>来生成主键之外,还可以根据具体的需求让持久化类的标识符属
Hibernate中除了使用<generator>来生成主键之外,还可以根据具体的需求让持久化类的标识符属
Hibernate中除了使用<generator>来生成主键之外,还可以根据具体的需求让持久化类的标识符属
复合主键在表中有多个属性共同确定一个元素,对应到实体类中就有多个属性共同构成主键属性。可以把
Primary key 与Unique Key都是MySQL数据库的唯一性约束。但是二者有很大的区别: 1、Primary key的1
在SOA中,复合服务是非常重要的一个概念。总体来说,按其复合程度,复合服务可以分为:一般意义上的
在SOA中,复合服务是非常重要的一个概念。总体来说,按其复合程度,复合服务可以分为:一般意义上的
上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同
作者:zccst 一、key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id int(11) NOT NULL
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号