Получить значение, присоединенное к таблице 2 с помощью Геттера в весенней загрузке

#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();