Hibernate中联合主键映射学习
2016-04-12 23:09
363 查看
首先说下一个类中单个主键在hibernate中的映射配置
直接上代码:
配置文件:
直接上代码:
<hibernate-mapping package="ray.po"> <class name="User" table="_user" lazy="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <property name="age"></property> </class> </hibernate-mapping>对应的实体类:
package ray.po; public class User { private int id; private String name, age; 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 String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } public User(int id, String name, String age) { super(); this.id = id; this.name = name; this.age = age; } public User() { super(); } }测试代码:
package ray.po; import org.hibernate.Session; import ray.SessionUtil.HibernateSessionFactory; public class UserTest { public static void main(String[] args) { User user = new User(); user.setName("雷盼"); user.setAge("26"); Session session = HibernateSessionFactory.getSession(); session.beginTransaction(); session.save(user); session.getTransaction().commit(); session.close(); } }
Hibernate: create table _user ( id integer not null auto_increment, name varchar(255), age varchar(255), primary key (id) )但是有时候我们再设计数据库表的时候,会用多个字段作为联合主键,那么在hibernate中怎么配置这中情况呢?
配置文件:
<hibernate-mapping package="ray.compositeId"> <class name="Student" table="_Student" lazy="true"> <composite-id name="id" class="CompositeId"> <key-property name="firstName" column="_firstName"></key-property> <key-property name="lastName" column="lastName"></key-property> </composite-id> <property name="age"></property> </class> </hibernate-mapping实体类代码:
package ray.compositeId; public class Student { // 联合主键id private CompositeId id; private byte age; public CompositeId getId() { return id; } public void setId(CompositeId id) { this.id = id; } public byte getAge() { return age; } public void setAge(byte age) { this.age = age; } }联合主键的类:
package ray.compositeId; import java.io.Serializable; public class CompositeId implements Serializable { private String firstName, lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }测试代码:
package ray.compositeId; import org.hibernate.Session; import ray.SessionUtil.HibernateSessionFactory; //测试联合主键 public class Test { public static void main(String[] args) { Student s = new Student(); CompositeId sid = new CompositeId(); sid.setFirstName("子诺"); sid.setLastName("雷"); s.setAge((byte) 12); s.setId(sid); Session session = HibernateSessionFactory.getSession(); session.beginTransaction(); session.save(s); session.getTransaction().commit(); session.close(); } }
Hibernate: create table _Student ( _firstName varchar(255) not null, lastName varchar(255) not null, age tinyint, primary key (_firstName, lastName) )
相关文章推荐
- iptables详解,所有的都在这儿了
- 软考中高项学员:2016年4月11日作业
- App性能优化浅谈
- Linux网络编程socket选项之SO_LINGER,SO_REUSEADDR
- hibernate get和load 方法的区别
- poj-1207 THE 3n+1 problem
- AndroidStudio:图片有jpg改为png之后报错
- datatable转List<T>集合
- cygwin安装redis3.0集群报未知的类型名‘fd_set’解决方案
- [深入浅出Cocoa]Block编程值得注意的那些事儿
- 反编译
- WM_QUERYENDSESSION和WM_ENDSESSION
- c++作业3
- 死锁、活锁、饥饿
- oracle学习 第二章 限制性查询和数据的排序 ——01
- SQL基础入门(android,java)
- h5的瀑布流
- 解析纯真IP地址库
- List容器——LinkedList及常用API,实现栈和队列
- 面试题那些事(3)—栈