java多表查询实体类怎么写
时间: 2024-11-18 14:07:40 浏览: 6
java从数据库表反射出实体类,自动生成实体类
5星 · 资源好评率100%
在Java中,当需要进行多表关联查询,并将结果映射到复杂的实体类时,你需要创建一个包含所有关联字段的实体类。假设我们有两个相关的实体,一个是`User`,另一个是`Address`,并且`User`有一个`List<Address>`的关系。下面是如何编写这个`User`实体类的一个例子:
```java
import java.util.List;
import javax.persistence.*;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// 其他User类属性...
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL) // mappedBy用于指定外键关联
private List<Address> addresses;
// 构造函数、getter和setter省略...
public User(String name) {
this.name = name;
}
public void setAddress(List<Address> addresses) {
this.addresses = addresses;
}
// 获取地址列表
public List<Address> getAddresses() {
return addresses;
}
}
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String street;
private String city;
@ManyToOne
@JoinColumn(name = "user_id") // 这里是外键,对应User.id
private User user;
// 构造函数、getter和setter省略...
public Address(String street, String city, User user) {
this.street = street;
this.city = city;
this.user = user; // 设置关联
}
// 获取和设置User对象
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
```
在这个例子中,`@OneToMany`注解表示一个User可以有多个Address,而`@ManyToOne`表示一个Address属于一个User。`mappedBy`属性用于指定哪个字段在外部类(这里是User)上表示这种关系。
阅读全文