Hibernate通过Composite-element配置外联表实例 (码)

摘自圣思园Hibenrate 26. 组件映射深度解析 -37分钟

文件: Student.java, Contact.java, Student.hbm.xml


Student.java
public class Student
{
private String id;

private String name;

private Set contacts=new HashSet();
}



public class Contact
{
private String method;

private String address;
}


[b]Student.hbm.xml[/b]
<hibernate-mapping package="component">
<class name="Student" table="test_student">

<id name="id" column="id" type="string">
<generator class="uuid"></generator>
</id>


<property name="name" column="name" type="string"/>


<set name="contacts" table="contact">
<key column="student_id"></key>

<!-- 这里配置了关联表Contact的元素 -->
<composite-element class="Contact">
<property name="method" type="string"/>
<property name="address" type="string"/>

</composite-element>

</set>


</class>


</hibernate-mapping>





生成SQL:
[color=gray]Hibernate: create table contact (student_id varchar2(255 char) not null, method varchar2(255 char), address varchar2(255 char))
Hibernate: create table test_student (id varchar2(255 char) not null, name varchar2(255 char), primary key (id))
Hibernate: alter table contact add constraint FK_r3jhjlmx2uie72qpg7l3sedib foreign key (student_id) references test_student[/color]


[b]插入[/b]
	Session session=HibernateUtil.openSession();


Contact c1=new Contact("phone","233333","1");
Contact c2=new Contact("qq","233333","1");

Student s=new Student("1", "li",ArraysHelper.asSet(c1,c2) );

session.save(s);

Transaction tx=session.beginTransaction();

tx.commit();


结果:

[img]http://dl2.iteye.com/upload/attachment/0091/6305/c61f98af-5c9e-3576-8e93-f0786d68f14e.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值