【发布时间】:2012-02-24 04:05:08
【问题描述】:
表:Profile
pk fk fname lname dob ssn createDate ModifyDate
1 22 bob smith 01/02/1978 123456789 01/27/2012 null
2 22 bob smith 01/02/1978 987654321 01/27/2012 01/28/2012
3 22 bob smith 04/02/1944 123456789 01/27/2012 01/29/2012
4 22 bob dole 04/02/1944 123456789 01/27/2012 01/30/2012
5 22 bob dole 02/12/1913 123456789 01/27/2012 01/31/2012
6 22 john dole 02/12/1913 123456789 01/27/2012 02/02/2012
7 22 bob dole 11/22/1994 123456789 01/27/2012 02/03/2012
我想返回最近三次 dob 更改为 fk = 22。
所以这将返回记录 7、6、4。
所以我可以这样做:
Integer foreignKey = new Integer(22);
Criteria criteria = session.createCriteria(Profile.class);
List results = criteria.add(Restrictions.eq("fk",foreignKey))
.addOrder( Order.desc("ModifyDate") ).list();
现在我知道我可以编写一个 for 循环并比较 dob 以查看哪些日期已更改。
但是有没有一种休眠方法或更简单的方法来做到这一点?
如果我想看看dob 和fname 是否都改变了呢?
谢谢。
【问题讨论】:
-
欢迎来到 SO。请不要在这里转储控制台输出。尝试格式化您的表格,以便很好地显示。
-
你怎么知道
dob被改变了? -
@Tichodroma 我实际上在写字板中输入了这个,然后尝试使用 html
但它没有用。所以下次我会尝试更好地格式化它。感谢您的欢迎。
你可以用空格来缩进所有代码。不需要 HTML 标记。@Tichodroma 我想这就是问题所在。一些背景。有一个配置文件表,只要表中的任何属性发生更改,触发器就会在另一个表中创建历史记录。所以上面是历史表。我只需要检索最近 3 次 dob 更改。所以我认为这样做的唯一方法是比较每个记录的 dob 属性,看看是否有变化。所以我问有没有更简单的方法?我可以设置一些休眠属性或可以使用的方法?
标签: java sql database hibernate criteria