Передача Боба через тимьян - PullRequest
0 голосов
/ 20 марта 2019

Я использую SpringBoot 2.1.3 + JPA + Thymeleaf.Я становился «большим», когда попадал в маленькую проблему, которую мог бы решить грубым образом, но, если это возможно, я хотел бы сделать это хорошо.

Предположим, у меня есть 2 класса сущностей:

@Entity
@Data
@Table(name = "Users")
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id")
  private Long id;

  private String nome;

  @OneToOne(cascade = CascadeType.ALL)
  @JoinColumn(name = "user_id", referencedColumnName = "id")
  private Address address;
}

и затем:

@Entity
@Data
@Table(name = "ADDRESS")
public class Address {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id")
  private Long id;

  private String descrizione;

  @OneToOne(mappedBy = "address")
  private User user;

}

Теперь у меня есть контроллер, который загружает все адреса, присутствующие в БД

@GetMapping("/showForm")
public String showUserForm(Model model) {
  model.add("addresses", addressRepository.findAll());
  model.add("user", new User());
}

Страница Thymeleaf:

.....
<form id="form" action="" th:action="@{/save-user}" th:object="${user}" method="post">
  <select th:field="*{address}" id="address">
   <option th:each="add : ${addresses}" th:value="${add.id}" th:text="${add.description}"></option>
  </select>
  <input type="submit"></input>
</form>
.....

Когда я отправляю форму JPA, извлекаю объект адреса из его значения Id.Но если я создаю форму, связывающую UserDTO и AddressDTO, я не могу получить объект AddressDTO из поля выбора, а просто значение Id.

Я не могу использовать сущность внутри моей формы, потому что есть 4 варианта, которые предоставляютзагрузка файла и внутри сущности у меня есть тип байта [] для этого 4 атрибута и вместо этого в моем DTO MultipartFile.

Есть ли способ сделать то же самое с DTO ??Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...