gpt4 book ai didi

java - hibernate - 使用条件从两个表中获取数据

转载 作者:行者123 更新时间:2023-11-29 07:40:39 24 4
gpt4 key购买 nike

我有一个表 DocMaster,它与 DocMovement 表具有一对多映射。 DocMovement 表的列包含发送和接收用户 ID,以及发送和接收文档的日期作为单独的列。

//Doc_Mvmnt
@ManyToOne
@JoinColumn(name = "BARCODE", nullable=false)
public Doc_Master doc_master;

@ManyToOne
@JoinColumn(name="RECIPIENT_DETAIL")
private User_Details recipient_detail;

@ManyToOne
@JoinColumn(name="SENDER_DETAIL")
private User_Details sender_detail;

@Temporal(TemporalType.DATE)
//@Type(type="date")
@Column(name="RECIEVING_DATE")
private Date recieving_date;

@Temporal(TemporalType.DATE)
@Column(name="SENDING_DATE")
private Date sending_date;

//Doc_Master
@Column(name = "BARCODE", nullable=false, unique=true)
private String barcode;

@ManyToOne
@JoinColumn(name = "DEPT_ID")
private Department department;

//Department
@OneToMany(mappedBy= "department")
private List<Doc_Master> documents = new ArrayList<>();

我面临的问题是:

用户输入部门和日期范围。我想显示该部门在此日期范围内的所有文档变动。我无法编写条件以便获取我想要的数据。

Criteria criteria = session.createCriteria(Doc_Master.class);
criteria.add(Restrictions.eq("department", deptId));
criteria.add(Restrictions.between(/* */, fromDate, toDate)); // what to do here
List<Doc_Master> documents = (List<Doc_Master>)criteria.list();

请帮忙!!!

最佳答案

The user enters the department and range of dates. I want to display all the document movements withing this range of dates for that department.

首先,您应该查询Doc_Mvmnt而不是Doc_Master (您应该避免在类名中使用下划线):

Criteria criteria = session.createCriteria(Doc_Mvmnt.class);

请注意,使用当前的映射,您无法从主控导航到运动。这是从运动到掌握的单向关联。

接下来,您查询的不是部门,而是部门 ID:

criteria.add(Restrictions.eq("doc_master.department.id", deptId));

// what to do here

criteria.add(Restrictions.or(
Restrictions.between("sending_date", fromDate, toDate),
Restrictions.between("recieving_date", fromDate, toDate)));

关于java - hibernate - 使用条件从两个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com