Trying to get value from 2 joined tables with getter, have 2 models Customer
and 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; }
Address Repository with this query :
@Query( value = "SELECT ad FROM Address ad, Customer c WHERE ad.customer = c.id and c.id = 1) Optional <List<Address>> getAddress();
Try to get with getter :
Optional<List<Address>> address = getAddress(); System.out.println(address.getAddress()); //success System.out.println(address.getAddress().get().get(0).getCustomerBean().getName()) //null value
Successfully get data address from table Address
, but if get Customer
name get null
value, any suggestion?
Advertisement
Answer
Try the following in your @Query
definition:
@Query(value = "SELECT ad FROM Address ad JOIN FETCH ad.customer WHERE ad.customer = 1") Optional <List<Address>> getAddress();