java - 将 mysql 查询转换为 hibernate 查询

标签 java mysql hibernate

我有一个 MySQL 查询,我想将此查询转换为 Hibernate Query。到目前为止,这是我尝试过的。

userInQuery = "SELECT * FROM log where userName in(";
userCountQuery = "SELECT count(*) FROM log where userName in(";

for (int i = 0; i < users.length; i++) {
    userInQuery += "'" + users[i] + "',";
    userCountQuery += "'" + users[i] + "',";
}

userInQuery = userInQuery.substring(0, userInQuery.lastIndexOf(","))+ ") and
    systemdate  >= STR_TO_DATE('" + fromDt+ "' ,'%Y-%m-%d') and systemdate  <=
    STR_TO_DATE('"+ toDate + "','%Y-%m-%d')";

userCountQuery = userCountQuery.substring(0, userCountQuery.lastIndexOf(","))+ ")
    and systemdate  >= STR_TO_DATE('"+ fromDt+ "' ,'%Y-%m-%d') and systemdate  <=
    STR_TO_DATE('"+ toDate + "','%Y-%m-%d')";

//System.out.println("Final userInQuery : " + userInQuery);

psmt = conn.prepareStatement(userInQuery);

rscount = stmt.executeQuery(userCountQuery);

最佳答案

使用 Hibernate 查询:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String fromDate = "11-07-2014";
Date fromDt = formatter.parse(fromDate);
String toDate = "11-07-2014";
Date toDt = formatter.parse(toDate);

String userInQuery = "from log where userName in (:userList) and systemdate between :fromDate and :toDate";
Query q = s.createQuery(userInQuery);
q.setParameterList("usersList", users);
q.setParameter("fromDate", fromDt);
q.setParameter("toDate", toDt);
q.list();

注意:这里的:userList, :fromDate & :toDate是查询参数。

使用 Hibernate 条件:

List<?> users = //get data from either a query or criteria
criteria.add(Restrictions.and(Restrictions.in("userList", users),Restrictions.between("dateField", new SimpleDateFormat("dd-MM-YYYY").parse(fromDate), new SimpleDateFormat("dd-MM-YYYY").parse(toDate)));

OR

criteria.add(Restrictions.in("userList", users));
criteria.add(Restrictions.ge("systemDate", fromDt));
criteria.add(Restrictions.lt("systemDate", toDt));

关于java - 将 mysql 查询转换为 hibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689840/

相关文章:

php - webrivers - 如何使用 php 集成短信主服务器?

python - 为什么我会遇到此失败以及为什么 mysql 设置为 false?

java - 桌面应用程序的 UI

java - Apache Tomcat 适用于 MySQL、Jetty 或 Glassfish?

java - 实现此处预期的错误

php - MYSQL 查询查找已审查的服务数量

java - OneToMany 关系孤儿不会从数据库中删除

java - 当对集合进行 get 调用时,Hibernate 会删除延迟加载的多对多集合

java - 如何将日期时间存储在本地时间中,以便可以通过 hibernate 明确检索?

java - RecyclerView 适配器 - onCreateViewHolder 接收未知的 viewType