Hibernate联合主键

本文介绍了一个使用复合主键的Java User类及其Hibernate映射配置。通过User类和UserPK类实现复合主键,并详细展示了User.hbm.xml文件中如何定义复合主键及属性映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 User类

package com.lbx.model;

import java.util.Date;


//联合主键的生成
public class User {
	/*private int id;
	private String name;*/
	private UserPK userPK;
	private Date birthday;
	
	/*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;
	}*/
	
	public Date getBirthday() {
		return birthday;
	}
	public UserPK getUserPK() {
		return userPK;
	}
	public void setUserPK(UserPK userPK) {
		this.userPK = userPK;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public User() {
		super();
	}
	public User(Date birthday) {
		super();
		this.birthday = birthday;
	}
	public User(UserPK userPK, Date birthday) {
		super();
		this.userPK = userPK;
		this.birthday = birthday;
	}
	
}

User主键类UserPK

package com.lbx.model;

import java.io.Serializable;

@SuppressWarnings("serial")
public class UserPK implements Serializable{
	
	private int id;
	private String name;
	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;
	}
	
	@Override
	public boolean equals(Object o){
		if(o instanceof UserPK){
			UserPK userPK = (UserPK)o;
			if(this.id==userPK.getId()&&this.name.equals(userPK.getName())){
				return true;
			}
		}
		return false;
	}
	
	@Override
	public int hashCode(){
		return this.name.hashCode();
	}
	
}

 

 

User.hbm.xml文件的配置

<?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.lbx.model">
	
	<class name="User" table="user" lazy="true">
		
		<composite-id name="userPK" class="UserPK">
			<key-property name="id" column="ID" type="integer"></key-property>
			<key-property name="name" column="NAME" type="string"></key-property>
		</composite-id>
		
		<property name="birthday" type="java.util.Date" />
		
	</class>
	
</hibernate-mapping>

 

测试方法和hibernate.cfg.xml文件没写(很简单)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值