Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过Hibernate从页查询到表?_Java_Mysql_Hibernate_Orm_Hql - Fatal编程技术网

Java 如何通过Hibernate从页查询到表?

Java 如何通过Hibernate从页查询到表?,java,mysql,hibernate,orm,hql,Java,Mysql,Hibernate,Orm,Hql,我用Hibernate创建了3个表,如何在设置任务状态时返回一个列表?并在“dotask”表中设置创建用户id=?,任务状态,在任务表中设置创建用户id 如何编写“HQL”?这是我的,但我不能用它来实现: String hql="from task t left join dotask d on d.task_status = ? and t.create_user_id = ? limit ?, ?"; Query query=sess.createQuery(hql); query.set(

我用Hibernate创建了3个表,如何在设置任务状态时返回一个列表?并在“dotask”表中设置
创建用户id
=?,
任务状态
,在
任务
表中设置
创建用户id

如何编写“HQL”?这是我的,但我不能用它来实现:

String hql="from task t left join dotask d on d.task_status = ? and t.create_user_id = ? limit ?, ?";
Query query=sess.createQuery(hql);
query.set(0,1);
...
query.set(4,2);
List<Task> lt=query.list();
请改为尝试此操作(不确定,因为您没有显示对象模型,也没有描述所有关系):

并使用
setMaxResults()
setFirstResult()
以可移植的方式限制结果

工具书类
  • Hibernate核心参考指南
试试这个(不确定,因为您没有显示对象模型,也没有描述所有关系):

并使用
setMaxResults()
setFirstResult()
以可移植的方式限制结果

工具书类
  • Hibernate核心参考指南

在进行寻呼时,是否最好包含一个“按顺序”语句?@extranon您当然是对的。但我的主要观点是避免使用limit关键字。无论如何,我不确定在当前状态下是否可以编写查询,我不太了解映射。在进行分页时是否最好包含ORDER BY语句?@extranon您当然是对的。但我的主要观点是避免使用limit关键字。无论如何,我不确定在当前状态下是否可以编写查询,我不太理解映射。
<class name="com.model.Task" table="task" >
   <id name="id">
       <generator class="native"/>
   </id>
  <property name="name" />
    ...
    ...
  <set name="lu" table="dotask" cascade="save-update" lazy="true">
        <key column="task_id"></key>
        <many-to-many class="com.model.User" column="user_id"></many-to-many>
   </set>
</class>    
CREATE TABLE `dotask` (
  `id` int(11) NOT NULL auto_increment,
  `user_id` int(11) NOT NULL,
  `task_id` int(11) NOT NULL,
  `task_status` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `FKB0F704903D43702C` (`user_id`),
  KEY `FKB0F70490EA675DEC` (`task_id`),
  CONSTRAINT `FKB0F704903D43702C` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
  CONSTRAINT `FKB0F70490EA675DEC` FOREIGN KEY (`task_id`) REFERENCES `task` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;


CREATE TABLE `task` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(128) NOT NULL,
  `create_user_id` int(11) NOT NULL,
  `create_time` date NOT NULL,
  `end_time` date default NULL,
  `limit_time` date NOT NULL,
  `day` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;


CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `departmentId` int(11) default NULL,
  `name` varchar(50) default NULL,
  `password` varchar(50) default NULL,
  `sex` char(2) default NULL,
  `birthday` date default NULL,
  `address` varchar(200) default NULL,
  `phone` varchar(100) default NULL,
  `mobile` varchar(100) default NULL,
  `remark` varchar(255) default NULL,
  `login` varchar(50) default NULL,
  `email` varchar(200) default NULL,
  `active` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;
SELECT t 
FROM Task t LEFT JOIN t.dotask d WITH d.task_status = ? 
WHERE t.create_user_id = ?