hibernate学习

本文详细介绍了Hibernate中实现一对多关联的两种主要方法:主键关联与唯一外键关联,并通过具体的Java类和映射文件示例展示了这两种关联的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]hibernate一对多关联:[/b]

一对多关联有两种方式:一是主键关联,二是惟一外键关联。
外键关联:
public class Person {

private Long id;
private int age;
private String firstname;
private String lastname;

public Person(){}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

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;
}
}

<hibernate-mapping package="com.daotang.test.domain">
<class name="Person" table="PERSON">
<id name="id" column="PERSON_ID">
<generator class="native"> </generator>
</id>
<property name="age" column="AGE" type="int"></property>
<property name="firstname" column="FIRSTNAME" type="string"></property>
<property name="lastname" column="LASTNAME" type="string"></property>
</class>
</hibernate-mapping>


import java.util.Date;

public class Event {

private Long id;
private String title;
private Date sdate;

[color=red]private Person person;[/color]
public Person getPerson() {
return person;
}

public void setPerson(Person person) {
this.person = person;
}

public Event(){}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public Date getSdate() {
return sdate;
}

public void setSdate(Date sdate) {
this.sdate = sdate;
}

}


<hibernate-mapping package="com.daotang.test.domain">
<class name="Event" table="EVENT">
<id name="id" column="EVENT_ID">
<generator class="native"></generator>
</id>
<property name="title" column="TITLE" type="string"></property>
<property name="sdate" column="SDATE" type="date"></property>
[color=red]<many-to-one name="person" class="Person" column="PERSON_ID" unique="true"></many-to-one>[/color] </class>
</hibernate-mapping>

主键关联:

public class Person {

private Long id;
private int age;
private String firstname;
private String lastname;

private Event event;
}

<hibernate-mapping package="com.daotang.test.domain">
<class name="Person" table="PERSON">
<id name="id" column="PERSON_ID">
[color=red] <generator class="foreign">
<param name="property">event</param>
</generator>[/color] </id>
<property name="age" column="AGE" type="int"></property>
<property name="firstname" column="FIRSTNAME" type="string"></property>
<property name="lastname" column="LASTNAME" type="string"></property>
[color=red] <one-to-one name="event" class="Event" constrained="true"></one-to-one>[/color]
</class>
</hibernate-mapping>

public class Event {

private Long id;
private String title;
private Date sdate;
}

<hibernate-mapping package="com.daotang.test.domain">
<class name="Event" table="EVENT">
<id name="id" column="EVENT_ID">
<generator class="native"></generator>
</id>
<property name="title" column="TITLE" type="string"></property>
<property name="sdate" column="SDATE" type="date"></property>
</class>
</hibernate-mapping>

主键关联就是共享一个主键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值