Hibernate学习篇04——联合主键(一)
2016-03-03 00:41
363 查看
表结构
User.hbm.xml
User.java
Test.java
arg0, Serializable arg1) throwsHibernateException。所以User必须要实现Serializable接口。
日志:
Hibernate: select user0_.username as username0_0_, user0_.name as name0_0_, user0_.password as password0_0_ from USER3 user0_ where user0_.username=? and user0_.name=?
username:zhangsan password:111111name:zs
Hibernate: select user0_.username as username0_0_, user0_.name as name0_0_, user0_.password as password0_0_ from USER3 user0_ where user0_.username=? and user0_.name=?
username:zhangsan password:222222name:12
drop table user3; create table USER3 ( USERNAME VARCHAR2(32), PASSWORD VARCHAR2(32), NAME VARCHAR2(32) ); alter table user3 add primary key (username,name); insert into user3 (username,name,password) values ('zhangsan','zs','111111'); insert into user3 (username,name,password) values ('zhangsan','12','222222'); insert into user3 (username,name,password) values ('lisi','ls','333333'); insert into user3 (username,name,password) values ('lisi','34','444444'); commit;
User.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.masteringhibernate.a041compositeid"> <class name="User" lazy="true" table="USER3"> <composite-id> <key-property name="username" /> <key-property name="name" /> </composite-id> <property name="password" /> </class> </hibernate-mapping>
User.java
package com.masteringhibernate.a041compositeid; import java.io.Serializable; public class User implements Serializable { private String username; private String password; private String name; //getters and setters }
Test.java
package com.masteringhibernate.a041compositeid; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Test { private static SessionFactory sessionFactory; public static void main(String[] args) { Configuration configuration = new Configuration().configure("com/masteringhibernate/a041compositeid/hibernate.cfg.xml"); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); User userTmp1 = new User(); userTmp1.setUsername("zhangsan"); userTmp1.setName("zs"); User userTmp2 = new User(); userTmp2.setUsername("zhangsan"); userTmp2.setName("12"); User user1 = (User)session.get(User.class,userTmp1); System.out.println("username:"+user1.getUsername()+"\t\tpassword:"+user1.getPassword()+"\t\tname:"+user1.getName()); User user2 = (User)session.get(User.class, userTmp2); System.out.println("username:"+user2.getUsername()+"\t\tpassword:"+user2.getPassword()+"\t\tname:"+user2.getName()); tx.commit(); session.close(); } }注意:session的get方法是这样定义的,Object org.hibernate.Session.get(Class
arg0, Serializable arg1) throwsHibernateException。所以User必须要实现Serializable接口。
日志:
Hibernate: select user0_.username as username0_0_, user0_.name as name0_0_, user0_.password as password0_0_ from USER3 user0_ where user0_.username=? and user0_.name=?
username:zhangsan password:111111name:zs
Hibernate: select user0_.username as username0_0_, user0_.name as name0_0_, user0_.password as password0_0_ from USER3 user0_ where user0_.username=? and user0_.name=?
username:zhangsan password:222222name:12
相关文章推荐
- Nginx运行和控制命令
- 自我介绍
- 微信公众号 “网络出错,轻触屏幕重新加载”
- 260. Single Number III
- (java)Binary Tree Preorder Traversal
- linux redis安装
- ios 多线程开发 GCD
- VisualSVN Server仓库迁移到Linux(包含所有版本, 权限,用户信息)
- Linux系统运维/vi的额外功能/4
- Mistakes in Python
- (java)Missing Number
- 数论+差分 hdu1121 Complete the Sequence
- 用队列写贪吃蛇(C语言版)
- Laravel简易后台管理Laravel administrator的安装与使用
- Ant搭建 一键生成APP技术 平台
- hbase
- DB2 表空间监控
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- 【前端构建】WebPack实例与前端性能优化
- 【学习笔记】day2数据存储和界面展现第一天 01_相对布局