在Hibernate5的高级组件中,利用关联关系操纵对象,编辑持久化对象与映射文件: 持久化对象有Company、Login、Address和Client。下面对Company、Login的代码进行编辑。
时间: 2024-02-23 15:00:06 浏览: 21
好的,下面是Company和Login的代码示例,包括对应的映射文件:
Company.java
```
@Entity
@Table(name = "company")
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "company", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Client> clients = new HashSet<>();
// getters and setters
}
```
Login.java
```
@Entity
@Table(name = "login")
public class Login {
@Id
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@OneToOne(mappedBy = "login", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private Client client;
// getters and setters
}
```
Company.hbm.xml
```
<hibernate-mapping>
<class name="com.example.Company" table="company">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" not-null="true" />
</property>
<set name="clients" cascade="all, delete-orphan" inverse="true">
<key column="company_id" />
<one-to-many class="com.example.Client" />
</set>
</class>
</hibernate-mapping>
```
Login.hbm.xml
```
<hibernate-mapping>
<class name="com.example.Login" table="login">
<id name="username" type="string">
<column name="username" />
</id>
<property name="password" type="string">
<column name="password" not-null="true" />
</property>
<one-to-one name="client" property-ref="login" cascade="all, delete-orphan" />
</class>
</hibernate-mapping>
```
在这里,Company和Login之间建立了双向一对多和一对一的关联关系,分别通过clients和client属性来维护关联关系。使用cascade属性可以指定级联操作,使用orphanRemoval属性可以在删除Company或Login对象时自动删除相关的Client对象。映射文件中的set和one-to-one标签分别对应@OneToMany和@OneToOne注解。