如何解决JPA容器过滤器一对多关系
我有一个Vaadin8应用程序和以下两个类。
(简化了类以提高可读性)
汽车类别:
public class Car implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@OneToMany(cascade = CascadeType.ALL,mappedBy = "carId")
private Collection<CarLeasingDuration> carLeasingDurationCollection;
}
汽车租赁期限:
public class CarLeasingDuration implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Column(name = "start_datetime")
@Temporal(TemporalType.TIMESTAMP)
private Date startDatetime;
@Basic(optional = false)
@NotNull
@Column(name = "end_datetime")
@Temporal(TemporalType.TIMESTAMP)
private Date endDatetime;
@Basic(optional = false)
@NotNull
@Column(name = "cost")
private float cost;
@JoinColumn(name = "car_id",referencedColumnName = "id")
@ManyToOne(optional = false)
private Car carId;
}
您拥有可以在一段时间(startDatetime到endDatetime)内多次租赁的汽车。
我想创建一个ComboBox,其中包含所有汽车的列表,但租车期限已过期的除外。所以我从Car类创建了一个JPA容器
EntityManager em = JPAContainerFactory.createEntityManagerForPersistenceUnit(HelpConstants.PERSISTENT_UNIT);
JPAContainer<Car> carContainer = JPAContainerFactory.makeReadOnly(Car.class,em);
我已经尝试过类似的方法,但是那当然不起作用
carContainer.addNestedContainerProperty("carLeasingDurationCollection.carLeasingDuration.endDatetime");
carContainer.addContainerFilter(new Not(new Compare.Greater("carLeasingDurationCollection.carLeasingDuration.endDatetime",new Date())));
我收到无效的属性名称错误。
是否有一种方法可以根据Car和CarLeasingDuration之间的一对多关系来过滤此容器?如果没有,我该怎么做呢?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。