我尝试查找插入到表中的最后一个元素。hibernate查找表中最后一个元素的问题
我试图把它写这样的:
m_query = m_session.createQuery("LAST(bankAccount) FROM AccountStatus");
需要的记录的名称的BankAccount和表的名称是AccountStatus
我应该如何正确地写呢?
感谢了很多,
P.S
这是一个Hibernate查询
礼在关系模型
我尝试查找插入到表中的最后一个元素。hibernate查找表中最后一个元素的问题
我试图把它写这样的:
m_query = m_session.createQuery("LAST(bankAccount) FROM AccountStatus");
需要的记录的名称的BankAccount和表的名称是AccountStatus
我应该如何正确地写呢?
感谢了很多,
P.S
这是一个Hibernate查询
礼在关系模型
“表” 已设置的语义。没有“最后”元素,排序可以是任意的。您需要为插入日期引入排序标准,如时间戳。有不同的可能的实现。您可以通过简单的只读(对于用户而不是Hibernate!)字段在Java对象模型上执行此操作,该字段通过数据库级别的触发器或Hibernate生命周期侦听器初始化为当前时间。然后,您可以轻松获取具有最新插入日期的实体。
如果你有你的表ID可以通过最大ID
m_query = m_session.createQuery("max(id) FROM AccountStatus");
这只会返回AccountStatus表的最大ID。要返回LAST(bankAccount),您必须使用子查询 – andih 2012-08-14 08:42:22
'm_query = m_session.createQuery(“a.bankAccount FROM AccountStatus a where a.id =(从AccountStatus中选择max(id))”);'或' m_query = m_session.createQuery(“a.bankAccount FROM AccountStatus按a.id desc limit 1排序”);' – ssedano 2012-08-14 08:45:00
只有在确保id是连续的时才有效。如果db为事务保留并释放id的块(如MSSQL可以),它将不起作用。 – 2012-08-14 08:47:12
找到最后一个元素,如果存在在你的表的自动增量ID列,你也可以使用:
m_query = m_session.createQuery("a1.bankAccount FROM AccountStatus a1 where not exists (a2.bankAccount FROM AccountStatus a2 where a2.id>a1.id)");
怎么办你的意思是最后? – 2012-08-14 08:38:12
如果您的数据应记录更改的历史记录,请考虑将Hibernate Envers这一捆绑在Hibernate中的模块(自3.5或3.6开始)。这是在不同时间存储数据并在特定时间查询的方式。 – 2012-08-14 08:40:03