您的位置:首页 > 其它

Hibernate学习篇04——联合主键(一)

2016-03-03 00:41 363 查看
表结构

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: