gpt4 book ai didi

java - 从 hibernate 中的两个表中选择实体

转载 作者:行者123 更新时间:2023-12-01 12:25:27 25 4
gpt4 key购买 nike

我有两个这样的表:

+------------+             +------------+ 
| Parent | | Child |
+------------+ +------------+
|child_id |------------>|id |
|id | |date |
|name | +------------+
+------------+

我需要提取 Parent 类型的对象取决于date

这是我的查询:

Query query = session.createQuery(
"SELECT p.child_id, p.id, p.name from Parent p, Child c
WHERE p.child_id = c.id
AND c.date between :date and CURRENT_DATE ");

query.setTimestamp("date",new Date(2012,1,1));

List<Parent> objList = query.list() // List<Object[]> instead of List<Parent>

我已经尝试了几个小时了,但我无法比这更接近了。您能告诉我我的查询有什么问题或者我如何实现我的目标吗?

编辑:我发现了一个问题:new Date(2012,1,1)正在创建 3092 年的日期,我通过通过 java.sql.Date 添加日期来修复它

结果是 List<Object[]> ,我知道我可以迭代每个对象 vector ,并使用对象的值创建一个新的父级,但是没有办法直接获取 Parent查询列表中的对象?

最佳答案

如果您使用此通话,时间将被切断:

query.setDate(...);

相反,请使用以下调用:

query.setTimestamp(...)

也尝试使用Criteria Queries

如:

criteria.add(Expression.eq("date", new Date()));
<小时/>

如果查询不受日期限制,您可以通过比较日期进行一些实验。例如如下:

...
Date customDate = new Date(2012, 1, 1);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

StringBuilder query = new StringBuilder("from Child c");
query.append(" where c.date >= '" + simpleDateFormat.format(customDate) + "'");

Query result = session.createQuery(query.toString());
List resultList = result.list();
...

关于java - 从 hibernate 中的两个表中选择实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380245/

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