在 Spring boot 中获取值 Joined 2 Table with Getter
Get Value Joined 2 Table with Getter in Spring boot
尝试从 2 个加入 table 的 getter 中获取价值,有 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();
尝试使用 getter :
Optional<List<Address>> address = getAddress();
System.out.println(address.getAddress()); //success
System.out.println(address.getAddress().get().get(0).getCustomerBean().getName()) //null value
成功从tableAddress
获取数据地址,但是如果获取Customer
名称获取null
值,有什么建议吗?
在您的 @Query
定义中尝试以下内容:
@Query(value = "SELECT ad FROM Address ad JOIN FETCH ad.customer WHERE ad.customer = 1")
Optional <List<Address>> getAddress();
尝试从 2 个加入 table 的 getter 中获取价值,有 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();
尝试使用 getter :
Optional<List<Address>> address = getAddress();
System.out.println(address.getAddress()); //success
System.out.println(address.getAddress().get().get(0).getCustomerBean().getName()) //null value
成功从tableAddress
获取数据地址,但是如果获取Customer
名称获取null
值,有什么建议吗?
在您的 @Query
定义中尝试以下内容:
@Query(value = "SELECT ad FROM Address ad JOIN FETCH ad.customer WHERE ad.customer = 1")
Optional <List<Address>> getAddress();