【发布时间】:2020-12-01 21:24:50
【问题描述】:
我有以下声明:
@Query("SELECT "
+ "new com.app.model.RestaurantOrderPartial( "
+ "o.orderId, o.orderedAt, o.orderType, o.orderState, o.orderValue, o.deliveryPrice, o.deliveredBy, o.driver) "
+ "FROM Order o "
+ "WHERE o.restaurant.restaurantId = ?1 "
+ "AND o.orderedAt BETWEEN ?2 and ?3 "
+ "ORDER BY o.orderedAt DESC ")
List<RestaurantOrderPartial> getRestaurantOrdersCompressed(long restaurantId, LocalDateTime dateBeforePeriod, LocalDateTime now); //12 Month
表中o.driver 为NULL 的行,构造函数不构造对象的条目并且不将其包含在结果列表中。
为什么会有这种行为?以及如何让构造函数在自定义对象RestaurantOrderPartial中包含Driver为空的条目,根据Column中的值,Driver对象将为空。
这是我的 POJO:
public class RestaurantOrderPartial {
private long orderId;
private LocalDateTime orderedAt;
private OrderType orderType;
private OrderState orderState;
private Long orderValue;
private int deliveryPrice;
private DeliveredBy deliveredBy;
private Driver driver;
}
public class Driver {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long driverId;
@Column
private String email;
@Column
private String password;
@Column
private String fullName;
@Column
private String phoneNumber;
@Column
private String secondaryPhoneNumber;
@Column
private String fullAddress;
@Column
private boolean isActive;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "cityId")
private City city;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "locationId")
private Location location;
@JsonIgnore
@OneToMany(mappedBy="driver")
private List<Order> orders;
感谢您的帮助。
【问题讨论】:
-
如果 driver 为 null,是否设置了 restaurantId 和 oderedAt?
-
是的。除了 o.driver,一切都设置好了。驱动程序(在相应表中引用驱动程序的列中的 ID)为空。
-
能否展示一下班级和样本数据
-
请查看我更新的问题
-
您是否对数据库运行了休眠生成的查询以确保返回的数据包含驱动程序值为
null的行以排除任何数据设置问题?
标签: java sql spring constructor jpql