XML配置方法
1.新建一个用于存放联合主键的类.
2.配置映射文件
//新增存放联合主键的类.
//需要实现序列化接口,覆盖hashCode和equals方法
package com.meiyoudao.domain;
import java.io.Serializable;
/**
*
* @author meiyoudao
*
*/
public class PersonPK implements Serializable{
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//需要覆盖hashCode 和 equals方法
@Override
public int hashCode() {
StringBuffer strb = new StringBuffer();
//返回联合主键的hashcode码
//在map数组中能区分
return strb.append(id).append(name).hashCode();
}
@Override
public boolean equals(Object obj) {
if(obj instanceof PersonPK){
PersonPK o = (PersonPK)obj;
if(o.id == this.id && o.name.equals(this.name)){
return true;
}
}
return false;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.meiyoudao.domain">
<class name="Person">
<composite-id name="personPK" class="PersonPK">
<key-property name="id"></key-property>
<key-property name="name"></key-property>
</composite-id>
<property name="weight"/>
</class>
</hibernate-mapping>
Annotation配置的第一种方法
1.新建一个存放主键的类.并声明这个类为@Embeddable
2.在domain类中的get存放主键类的方法上,注解为@Id
package com.meiyoudao.domain;
import java.io.Serializable;
import javax.persistence.Embeddable;
/**
*
* @author meiyoudao
*
*/
@Embeddable//可以被嵌入的
public class PersonPK implements Serializable{
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//需要覆盖hashCode 和 equals方法
@Override
public int hashCode() {
StringBuffer strb = new StringBuffer();
//返回联合主键的hashcode码
//在map数组中能区分
return strb.append(id).append(name).hashCode();
}
@Override
public boolean equals(Object obj) {
if(obj instanceof PersonPK){
PersonPK o = (PersonPK)obj;
if(o.id == this.id && o.name.equals(this.name)){
return true;
}
}
return false;
}
}
package com.meiyoudao.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.TableGenerator;
@Entity
public class PersonAnno {
private String weight;
private PersonPK personPK;
@Id
public PersonPK getPersonPK() {
return personPK;
}
public void setPersonPK(PersonPK personPK) {
this.personPK = personPK;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
}
Annotation配置的第二种方法
在domain类中的get存放主键类的方法上,注解为@EmbeddedId
package com.meiyoudao.domain;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.TableGenerator;
@Entity
public class PersonAnno {
private String weight;
private PersonPK personPK;
@EmbeddedId
public PersonPK getPersonPK() {
return personPK;
}
public void setPersonPK(PersonPK personPK) {
this.personPK = personPK;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
}
Annotation配置的第三种方法(最适合开发习惯)
1.新建一个存放主键的类
2.在domain类中的主键get方法上,注解为Id(有几个注解几个)
3.注解这个类为@IdClass(com.meiyoudao.domain.PersonPK.class)指定主键类
package com.meiyoudao.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
@Entity
@IdClass(com.meiyoudao.domain.PersonPK.class)
public class PersonAnno {
private int id;
private String name;
private String weight;
@Id
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Id
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
}
分享到:
相关推荐
第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并...
本文档简单描述了注解实现联合主键类的生成
hibernate中用到联合主键的看看就会了很棒的资料
hibernate的联合主键怎么设置、hibernate的联合主键怎么设置.doc
使用@IdClass创建联合主键,并实现外部关联
Hibernate联合主键,MyEclipse的例子
15_传智播客JPA详解_JPA中的联合主键.rar
JPA 联合主键实例 博文链接:https://zmx.iteye.com/blog/512468
针对JPA资料进行整理,根据传智播客的教学视频,边看边写,文档包含了jpa的基本概念,相关注解解释,及一些增删改查的demo。本文档方便了对jpa的学习与复习,快速掌握基本操作。
eos(Entity OperationSystem)开发中的联合主键使用
android ormlite 模拟实现 联合主键 参考文档说明:http://blog.csdn.net/u013250921/article/details/18264555
NULL 博文链接:https://1028826685.iteye.com/blog/1525788
添加联合主键.sql
主要介绍了java hibernate使用注解来定义联合主键的相关资料,需要的朋友可以参考下
原生的sqoop在迁移联合主键的表至hive时,只能识别一个主键,导致数据覆盖。本资源是把sqoop的源码按照官方推荐的issue解决方案重新编译后的版本。sqoop-1.4.7.bin__hadoop-2.6.0-2020.0508.tar.gz是已完成编译的tar...
15_JPA详解_JPA中的联合主键.zip 15_JPA详解_JPA中的联合主键.zip
阅读指南基本概念创建表时定义主键约束修改表时定义主键约束删除主键约束 ...当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。 创建表时定义主键约束
今天,在家试试django的model的设置,如何设置的联合主键,我经过查资料和实践,把结果记录如下: 例如: class user(Model): id=AutoField(primary_key=True) name = CharField(max_length=30) age =...
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第15讲 JPA中的联合主键.avi
本节文章主要介绍了oracle删除主键查看主键约束及创建联合主键,示例代码如下,需要的朋友可以参考下