我正在使用 Spring Boot、Thymeleaf、Hibernate 和 JPA 来开发此应用程序。我已经映射了需要从中检索数据的两个实体之间的关系,并且想知道如何在页面上显示两个表中的数据
有人可以告诉我如何使用 Thymeleaf 以一种形式显示 2 个实体的值吗?我找不到任何教程,提前致谢
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
private UserDetails userDetails;
public User(String name) {
this.name = name;
}
}
@Data
@NoArgsConstructor
@Entity
@Table(name = "user_details")
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String email;
public UserDetails(String email) {
this.email = email;
}
}
最佳答案
A.如果两个表彼此不相关,那么以下解决方案可能适合您。
创建 One Model 类。
public class UserAndUsersDetails { private String name; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }
}
2.然后调用数据库并获取结果
User user = userRepository.get(id);
UserDetails userDetails = userDetailsRepository.get(id);
3.在userAndUsersDetails类中设置数据
UserAndUsersDetails userAndUsersDetails = new UserAndUsersDetails()
userAndUsersDetails.setName(user.getName());
userAndUsersDetails.setEmail(userDetails.getEmail());
4.将 UserAndUsersDetails 类对象发送到 thymleaf。
B.如果两个表相互关联,那么以下是最佳解决方案。
1.从user中扩展userDetails并克隆它,并且不要将id放入UserDetails类中
@Data
@NoArgsConstructor
@Entity
@Table(name = "user_details")
public class UserDetails extends User implements Cloneable {
private String email;
public UserDetails(String email) {
this.email = email;
}
public UserDetails clone() {
UserDetails userDetails = new UserDetails();
userDetails.setName(this.getName());
}
}
- 获取 userDetils 结果
3.将其对象发送给thymelef。
关于java - 我如何使用 thymeleaf 以一种形式显示 2 个实体的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60412157/