联合外键作主键 @EmbeddwdId

原创 2012年03月25日 15:53:23

嵌入类:

package com.dlnu.model;

import java.io.Serializable;

import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Embeddable
public class Name implements Serializable {

	private static final long serialVersionUID = 1L;

	private Course course;

	private Student student;

	public Name() {
	}

	public Name(Course course, Student student) {
		this.course = course;
		this.student = student;

	}

	@ManyToOne
	@JoinColumn(name = "courseId", referencedColumnName = "cno",nullable=true)
	public Course getCourse() {
		return course;
	}
	@ManyToOne
	@JoinColumn(name = "studentId", referencedColumnName = "sno")
	public Student getStudent() {
		return student;
	}

	public void setStudent(Student student) {
		this.student = student;
	}

	public void setCourse(Course course) {
		this.course = course;
	}

	public boolean equals(Object obj) {

		if (this == obj) {
			return true;
		}
		if (obj.getClass() == Name.class) {
			Name target = (Name) obj;
			if (target.getCourse().equals(course)
					&& target.getStudent().equals(student)) {
				return true;
			}
		}
		return false;
	}

	public int hashCode() {

		return course.hashCode() + student.hashCode() * 17;
	}

}

 

实体类:

package com.dlnu.model;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;

@Entity
public class SC {

	
	private Name name;

	private Double grade;
	
	public Double getGrade() {
		return grade;
	}
	
	@EmbeddedId
	public Name getName() {
		return name;
	}
	public void setGrade(Double grade) {
		this.grade = grade;
	}
	public void setName(Name name) {
		this.name = name;
	}

}



 

在Hibernate中使用联合主键作为外键

        近期遇到一个ORM映射需求,即在“多-多”关系中需要将对应到两端实体的外键作为关系的联合主键,查了N多资料,试了N种方法,终于找到了自认为比较合理的ORM映射方式,在这里贴出来,与大家...
  • swing_zhou
  • swing_zhou
  • 2008年01月20日 22:34
  • 2158

Hibernate复合主键中其中有主键是引用外键情况下的配置方法

这个有两种配置方式。一种是映射一个也是复合主键一部分的外键列,通过一般的元素,并用insert="false" update="false"禁用该列的任何Hibernate插入或者更新。另一种方式是。...
  • wei83523408
  • wei83523408
  • 2016年02月28日 20:25
  • 538

数据库设计 联合主键设为外键的问题

很多时候我们在数据库设计中都会遇到这样的问题: 有两个表 ,例如(红色的是主键) 学生(学号,姓名,性别,专业号,班级号) student (sno,sname,sex,spno,class_no);...
  • guang_jing
  • guang_jing
  • 2013年11月25日 11:05
  • 3724

JPA 一对一配置,复合主键均为外键

这里有个比较奇怪的表对应关于 其中一张表的主键为一个复合主键 并且这个复合主键中的字段均对应另一张表的主键 配置如下 主体类: @Entity @Table(name="INFO_BRANC...
  • goodsun00
  • goodsun00
  • 2013年03月06日 15:30
  • 4444

JPA联合主键并做从表外键

@Embeddable public class BasicOrderPK implements Serializable { ... // 联合主键的两个字段单独生成...
  • lhd85
  • lhd85
  • 2016年06月16日 17:38
  • 1705

NHibernate单双主键与唯一外键映射-NHibernate入门到精通系列8

上一节:NHibernate多对一xml映射-NHibernate入门到精通系列7,介绍了NHibernate多对一的相关xml映射。 本节将介绍NHibernate一对一的xml映射,为您介绍...
  • caolijunmingyan
  • caolijunmingyan
  • 2012年09月06日 09:03
  • 4669

【Mysql】数据库设计三范式,主键表,外键

一、数据库设计三范式 1NF:要求一张表只描述一件事。比如学生表只能保存学生信息,和学生无关的信息不得保存; 2NF:要求保证表中每一行数据的原子性。即表中不得存在完全相同的数据行,存在完全相同的数据...
  • hongxiaoshuang
  • hongxiaoshuang
  • 2016年10月27日 18:26
  • 1605

PowerDesigner中的CDM设计的外键作主键

两个实体之间是一对一的关系。两个实体的标识符是“一样的”--但是好像CDM中不允许相同。这样的情况怎么处理? CDM里好像没有外键,我是说转换成PDM之后,外键又要做表的主键,在对应的CDM里是...
  • jjting
  • jjting
  • 2012年10月12日 21:49
  • 5768

关于数据库主键和外键(终于弄懂啦)

一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其...
  • bingqingsuimeng
  • bingqingsuimeng
  • 2016年06月06日 15:01
  • 71678

Oracle——主键外键

Oracle笔记———— 主键与外键 定义 外键: 1. 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。以另一个关系的外键作主关键字的表被称为主表,具有此外键...
  • u011954884
  • u011954884
  • 2015年09月17日 17:01
  • 602
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:联合外键作主键 @EmbeddwdId
举报原因:
原因补充:

(最多只允许输入30个字)