#java #spring-boot #lombok
Вопрос:
Пытаясь получить значение из 2 объединенных таблиц с помощью геттера, есть 2 модели Customer
и Address
.
@Setter
@Getter
@Data
@Entity
@Accessors(chain = true)
@Table(name = "customer")
public class Customer implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "phoneNumber")
private String phoneNumber;
@Column(name = "address")
private String address;
}
@Setter
@Getter
@Data
@Entity
@Accessors(chain = true)
@Table(name = "address")
public class Address implements Serializable {
@Id
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "address")
private String address;
@Column(name = "zipcode")
private String zipcode;
@Column(name = "number")
private Integer number;
@ManyToOne
@JoinColumn(name="customer")//
private Customer customerBean;
}
Адресуйте репозиторий с этим запросом :
@Query( value = "SELECT ad FROM Address ad, Customer c WHERE ad.customer = c.id and c.id = 1)
Optional <List<Address>> getAddress();
Попробуй связаться с геттером :
Optional<List<Address>> address = getAddress();
System.out.println(address.getAddress()); //success
System.out.println(address.getAddress().get().get(0).getCustomerBean().getName()) //null value
Успешно получить адрес данных из таблицы Address
, но если получить Customer
имя, получить null
значение, какие-либо предложения?
Комментарии:
1. У вас есть
@Table(name = "documents")
в обеих сущностях. Это опечатка?2. Да, опечатка, вопрос отредактирован
3. Поскольку вы использовали аннотации @Data, нет необходимости использовать аннотации Setter amp; Getter.
Ответ №1:
Попробуйте следующее в своем @Query
определении:
@Query(value = "SELECT ad FROM Address ad JOIN FETCH ad.customer WHERE ad.customer = 1")
Optional <List<Address>> getAddress();