hibernate联合主键注解配置
在网上看到好多方法,结果拿来用还是出现了一些问题。现在整理一下
1、主键类
import javax.persistence.Column;
public class UserRoleUionPK implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userId;
private String roleId;
/*public UserRoleUionPK() {
super();
}
public UserRoleUionPK(String userId, String roleId) {
this.userId = userId;
this.roleId = roleId;
}*/
@Column(name="user_id")
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name="role_id")
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
/* @Override
public boolean equals(Object o) {
if(o instanceof UserRoleUionPK){
UserRoleUionPK key = (UserRoleUionPK)o ;
if(this.getUserId().equals(key.getUserId()) && this.getRoleId().equals(key.getRoleId())){
return true ;
}
}
return false ;
}
@Override
public int hashCode() {
return this.roleId.hashCode()+this.userId.hashCode();
} */
}
网上有的说必须重写equals和hashcode,还有带参构造和无参构造,其实不然,我在项目中将其注释掉没有发现问题。
我这边主要注重的一点是@Column注解,之前没有加入@Colunm一直报列名无效的问题。
entity类
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table; @Entity
@Table(name = "sys_user_role")
public class SysUserRole implements java.io.Serializable { private UserRoleUionPK uionPK; @EmbeddedId
public UserRoleUionPK getUionPK() {
return uionPK;
} public void setUionPK(UserRoleUionPK uionPK) {
this.uionPK = uionPK;
} }
2、主键类
import javax.persistence.Column;
public class UserRoleUionPK implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userId;
private String roleId;
@Column(name = "user_id")
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name = "role_id")
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
}
entity类
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table; @Entity
@Table(name = "sys_user_role")
@IdClass(UserRoleUionPK.class)
public class SysUserRole implements java.io.Serializable { private String userId;
private String roleId;
@Id
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Id
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
} }
hibernate联合主键注解配置的更多相关文章
- hibernate联合主键 注解方式
转载自https://my.oschina.net/yotoo/blog/265571 方法一:主键类用@Embeddable,pojo类仍然用@Entity但是引用主键类的对象用@Id 主键pojo ...
- hibernate联合主键注解方式
方法一:主键类用@Embeddable,pojo类仍然用@Entity但是引用主键类的对象用@Id 主键pojo类: @Embeddable public class composeIdPK impl ...
- hibernate 联合主键生成机制(组合主键XML配置方式)
hibernate 联合主键生成机制(组合主键XML配置方式) 如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略. 具体 ...
- Java进阶知识05 Hibernate联合主键之Annotation(注解)和XML实现方式
1.Hibernate联合主键(Annotation实现) 1.1.单列主键 1.1.1.为什么要有主键? //唯一确定一条记录 1.1.2.一个表能否有多个主键? //不能 1.1.3. ...
- Hibernate联合主键映射
1.联合主键的映射规则 1) 类中的每个主键属性都对应到数据表中的每个主键列. Hibernate要求具有联合主键的实体类实现Serializable接口,并且重写hashCode与equals方法, ...
- hibernate 联合主键 composite-id
如果表使用联合主键(一个表有两个以上的主键),你可以映射类的多个属性为标识符属性.如:<composite-id>元素接受<key-property> 属性映射(单表映射)和& ...
- 这是一个hibernate 联合主键的例子
package com.bird.entity; import java.io.Serializable; import javax.persistence.Entity; import javax. ...
- hibernate 联合主键
xml方式处理联合主键: 以有两个主键:id和name的student表为例. 先创建个主键类: package com.bjsxt.hibernate; //黑色为必写项 public ...
- hibernate关联非主键注解配置
现在有两张表:一张t_s_user用户表和t_s_user_serial_number用户序号表 CREATE TABLE `t_s_user` ( `id` ) NOT NULL, `email` ...
随机推荐
- (转) Pointers
原地址 http://www.cplusplus.com/doc/tutorial/pointers/ Pointers In earlier chapters, variables have bee ...
- hdu1443(约瑟夫环游戏的原理 用链表过的)
Problem Description The Joseph's problem is notoriously known. For those who are not familiar with t ...
- Hibernate事务传播性
事务的几种传播特性 1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务.如果没有事务则开启 比如说:在UserManager中addUser里开启了,那么在addLog ...
- PHP基础示例:用PHP+Mysql编写简易新闻管理系统
实现目标:使用php和mysql操作函数实现一个新闻信息的发布.浏览.修改和删除操作 实现步骤: 一.创建数据库和表 1.创建数据库和表:newsdb 2.创建表格:news 字段:新闻id,标题,关 ...
- 配置chrome支持本地(file协议)ajax请求
将html代码拖拽进入chrome通过file协议浏览时,发送的ajax请求本地文件,会报跨域错误. XMLHttpRequest cannot load file:///E:/webs/extJS/ ...
- JSTL: empty 可以减少很多繁冗的判空(转)
${empty student.name }Empty是判空为空返回的真不为空返回的是假 ${(empty student.name)? '空' : '非空'} <c:if test=" ...
- 从Qt4到Qt5的,主要的进化有三(对于QtWidget的精简和优化会很有限)
从Qt4到Qt5的,主要的进化有三:1 语言的进化,原来是基于C++(qtwidget)和XML(.ui),现在添加了QML(QtQuick)+JS(v8)的架构.2 绘图系统的进化,原先基于QPai ...
- EditText获取焦点监听事件_EditText获取和失去焦点操作
今天在做搜索框的时候.遇到需要获取焦点之后做一些事情.实现方法也很简单.那就是绑定OnFocusChangeListener事件.实现 onFocusChange(View v, boolean ha ...
- linux系统下,11款常见远程桌面控制软件
linux系统下,11款常见远程桌面控制软件 一. Grdc 它是一个用GTK+编写的,适用于gnome桌面环境的远程桌面访问软件.看图: 常见功能: 1.提供全屏,窗口化的远程控制.支持高分辨率下的 ...
- First Missing Positive 解答
Question Given an unsorted integer array, find the first missing positive integer. For example,Given ...