Как я могу отображать значения из 2 объектов в одной форме, используя тимелиф - PullRequest
0 голосов
/ 26 февраля 2020

Я использую Spring Boot, Thymeleaf, Hibernate и JPA для разработки этого приложения. Я сопоставил отношения между двумя сущностями, из которых мне нужно получить данные, и мне интересно, как отобразить данные из двух таблиц на странице

Может кто-нибудь сказать мне, как я могу отображать значения из двух сущностей в одной форме используя Thymeleaf? Я не могу найти учебник, заранее спасибо

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

1 Ответ

1 голос
/ 26 февраля 2020

A. Если обе таблицы не связаны друг с другом, вам может пригодиться следующее решение.

  1. Создайте класс 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. Расширьте 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 reslut

3.Отправить его объект тимелефу.

...