hibernate 表连接| 耗时:0.199秒|54209条结果

hibernate之关于使用连接实现多对一关联映射

Hibernate】之关于使用连接实现多对一关联映射 在我们项目使用中采用中间最多的一般就是多对一,或者是多对多,当然一对一使用中间也是可以的,但是这种几率通常少之又少!所以这里重点介绍多对一和一对多的采用中间进行关联映射! 依然采用Group和Person来描述这个
http://www.itnose.net/detail/6138882.html 2014-10-28 17:51   [Hibernate]

hibernate多表映射,无法插入连接

现在有user, role和连接user_role三个,想利用hibernate向user插入一个用户时,同时检查是否有Set<Role>对象并插入映射表user_role。 但是调试时总是抛出   严重: ORA-01400
http://www.itnose.net/detail/6032674.html 2014-04-30 09:09   [J2EE]

hibernate连接Oracle自动建

[报错空指针异常,本人菜鸟,网上搜了很多资料,但是没有能解决,希望哪位大侠能帮帮忙测试一下,小弟在此谢谢了。 4:39:05,593 ERROR org.hibernate.tool.hbm2ddl.SchemaExport:372 - HHH000231
http://www.itnose.net/detail/818871.html 2014-02-21 17:42   [JavaWeb]

hibernate多表映射,无法插入连接

本帖最后由 zhonghuafy 于 2012-04-10 17:30:36 编辑 现在有user, role和连接user_role三个,想利用hibernate向user插入一个用户时,同时检查是否有Set<Role>对象并插入映射表user_role。 但是
http://www.itnose.net/detail/275797.html 2014-01-02-19:26   [J2EE]

Hibernate连接mysql数据库并自动创建

天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以
http://www.itnose.net/detail/6637787.html 2016-09-04 16:40   [J2SE]

hibernate在没有映射关系的之间,怎么实现左连接的效果?

求助,如题。 假如,t_student有个sex字段,t_dict有sexId、sexName字段, 这两张没有建立映射关系。 (sql:)select d.sexName from t_student as s left join t_dict  as d on s.sex = d.sexid 的效果 以上如何用hql实现??提示是类似sql的左连接! 回复讨论(解决方案) 没有建立关系 ,你还用 hql?!hql不是面向对象的么?   直接用sql语句吧,hibernate可以执行sql语句      hql 可以支持left join的....\ 也能二次抓取关联数据, 在set进去 直接使用sql吧 还是如楼上所说,用sql,如果不映射关系而连接,只能用内链接 hql 可以支持left join的....\ 之间没建立映射关系,hql怎么写,请教下。。。 hql写left join的时候 根本就不能写on 条件语句 因为Hibernate通过配置,已经知道这两个类的关系 如果你不配置 Hibernate是不可能知道两个类的关系的 所以我觉的 楼主的问题 hql无解 hql不用left join   收起来 可以做链接的 hql不用left join   收起来 可以做链接的 没理解,“收起来”什么意思? hql不用left join   收起来 可以做链接的 没理解,“收起来”什么意思? 发错 是sql 执行自定义sql: http://blog.csdn.net/ahhmdwg/article/details/40787251 也能二次抓取关联数据, 在set进去 我就是想用hibernate,你这也是个方案,我想到过,但是对性能的影响不知道有多大?因为它增加了和数据库的操作次数。 实际是这么个情况,我们的项目可能根据不同的客户情况使用不同的数据库。 所以,要么写多个数据库版本的sql;要么用hibernate,这样sql的适配交由它去做。 为了一劳永逸,选择了后者。 但是在做的过程中,我发现的关系挺复杂的,所以没有给实体(或者说是)建立强映射关系。这时候出现了没法“左连接”的问题,回归到帖子的题目了。。。 请大侠给出意见。。。 String sql="select d.sexName from t_student as s left join t_dict  as d on s.sex = d.sexid"; SQLQuery query = this.getSession().createSQLQuery(sql); 这样不行吗?   也能二次抓取关联数据, 在set进去 我就是想用hibernate,你这也是个方案,我想到过,但是对性能的影响不知道有多大?因为它增加了和数据库的操作次数。 这个对性能影响不大的,放心大胆的用把。。。
http://www.itnose.net/detail/6150451.html 2014-11-13 03:52   [JavaWeb]

hibernate之关于使用连接实现一对多关联映射

Hibernate】之关于使用连接实现一对多关联映射 基于中间实现的一对多的关联映射,还是比较常见的。 Person(人)和Group(组) Annotations配置 @Entity @Table(name="t_group") publicclass
http://www.itnose.net/detail/6139337.html 2014-10-29 09:43   [Hibernate]

求助!hibernate 多表连接查询(就两个)

;org.hibernate.dialect.MySQLDialect< /property>  hibernate 没有配置  mysql方言 < property name="dialect">org.hibernate.dialect.MySQLDialect< /property> 谢谢,不过,我确定我配置了的。 补充说明一下: 我是在用SSH框架整合做项目。sessions是从HibernateDaoSuppot得到的。 org.hibernate.MappingException   映射出了问题 org.hibernate.MappingException    映射出了问题 学习学习 是啊 学习学习 nice! 好消息: 问题解决了! 希望对遇到同样问题的像我一样的初学者有帮助。 我是在运用SSH开发一个博客网站,其中有一个需求是 列出用户评论过的文章,这就需要根据用户ID连接查询评论,博客。而SQL查询的结果集不会像HQL那样将结果集自动装载成相应实体对象,这个时候,使用addEntity(实体类.class)就可以把结果集装载成对应实体对象。代码: public List listBlogByComment(User user) {          String sql = "select t_blog.* from t_blog left join t_comment on t_comment.blog_id=t_blog.id where t_comment.user_id=?";         Query q = this.getSession().createSQLQuery(sql).addEntity(Blog.class);         q.setInteger(0, user.getId());         return q.list(); } 好消息: 问题解决了! 希望对遇到同样问题的像我一样的初学者有帮助。 我是在运用SSH开发一个博客网站,其中有一个需求是列出用户评论过的文章,这就需要根据用户ID连接查询评论,博客。而SQL查询的结果集不会像HQL那样将结果集自动装载成相应实体对象,这个时候,使用addEntity(实体类.class)就可以把结果集装载成对应实体对象。代码: Java code public L…… 本来想用颜色强调一下addEntity()方法,发现代码中不能再使用样式……没办法,重新贴一下代码: public List listBlogByComment(User user) {          String sql = "select t_blog.* from t_blog left join t_comment on t_comment.blog_id=t_blog.id where t_comment.user_id=?";         Query q = this.getSession().createSQLQuery(sql).addEntity(Blog.class);         q.setInteger(0, user.getId());         return q.list(); } 汗 你只不过是将结果集转化为了VO 按道理返回object[]也是没问题的呀 学习了~~ 感觉,,Hibernate的确提供了很大的方便,但是却也给带来了一些限制。。 PS:  我Hibernate还没精通。。说得不对,大家不要拍砖
http://www.itnose.net/detail/926408.html 2014-03-01 20:46   [J2EE]

oracle数据库还原及hibernate连接

1 hibernate连接oracle:      把驱动程序class12.jar放到lib下了. 2 hibernate里的连接     <bean id="MyData" class="
http://www.itnose.net/detail/523449.html 2014-02-06 12:40   [Hibernate]

Hibernate中配置多对多连接

接前文 在Hibernate中配置一对多连接 其中表roomusers更改如下: create   table  ROOMUSERS(        USERID  NUMBER ( 4 ),        ROOMID  NUMBER ( 4 )  not   null ); 映射文件配置如下: Room.hbm.xml <? xml version="1.0" encoding="utf-8" ?> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!--       Mapping file autogenerated by MyEclipse Persistence Tools --> < hibernate-mapping  package ="com.cosmow.hibernatedemo2.entity" >      < class  name ="Room"  table ="ROOM"  schema ="STORE" >          < id  name ="id"  type ="java.lang.Long" >              < column  name ="ID"  precision ="4"  scale ="0"   />              <!--  Oracle数据库增长方式序列  -->              < generator  class ="sequence" >                  < param  name ="sequence" > ROOM_SEQ </ param >              </ generator >          </ id >          <!--  映射roomnumber属性  -->          < property  name ="roomnumber"  type ="java.lang.String" >              < column  name ="ROOMNUMBER"  length ="11"  not-null ="true"   />          </ property >          <!--  映射name属性  -->          < property  name ="name"  type ="java.lang.String" >              < column  name ="NAME"  length ="32"  not-null ="true"   />          </ property >          <!--  通过连接的多端,因此需要table属性为roomusers  -->          < set  name ="users"  cascade ="all"  table ="roomusers" >              <!--  该key的字段为连接中的字段,作为外键  -->              < key  column ="roomid"   />              <!--  配置多对多  -->              < many-to-many  class ="Userinfo"  column ="userid"   />          </ set >      </ class > </ hibernate-mapping > Userinfo.hbm.xml <? xml version="1.0" encoding="utf-8" ?> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!--       Mapping file autogenerated by MyEclipse Persistence Tools --> < hibernate-mapping  package ="com.cosmow.hibernatedemo2.entity" >      < class  name ="Userinfo"  table ="USERINFO"  schema ="STORE" >          < id  name ="id"  type ="java.lang.Long" >              < column  name ="ID"  precision ="4"  scale ="0"   />              <!--  Oracle数据库增长方式序列  -->              < generator  class ="sequence" >                  < param  name ="sequence" > USERINFO_SEQ </ param >              </ generator >          </ id >          < property  name ="name"  type ="java.lang.String" >              < column  name ="NAME"  length ="32"  not-null ="true"   />          </ property >          < property  name ="sex"  type ="java.lang.String" >              < column  name ="SEX"  length ="2"   />          </ property >          < set  name ="rooms"  cascade ="all"  table ="roomusers" >              < key  column ="userid"   />              < many-to-many  class ="Room"  column ="roomid"   />          </ set >      </ class > </ hibernate-mapping > 测试代码如下: /** */ /**  * Demo.java  *  * Copyright 2008. All Rights Reserved.  */ package  com.cosmow.hibernatedemo2.demo; import  java.util.HashSet; import  java.util.Iterator; import  java.util.Set; import  org.hibernate.Session; import  org.hibernate.Transaction; import  com.cosmow.HibernateSessionFactory; import  com.cosmow.hibernatedemo2.entity.Room; import  com.cosmow.hibernatedemo2.entity.Userinfo; /** */ /**  * TODO  *   * Revision History  *  * 2008-7-11,Cosmo,created it  */ public   class  Demo  {          public void test() {          //第一个room实体         Room room = new Room();         room.setName("cosmoHome");         room.setRoomnumber("001");                  //第二个room实体         Room room2 = new Room();         room2.setName("Home2");         room2.setRoomnumber("002");         //第一个user实体         Userinfo user = new Userinfo();         user.setName("cosmo");         user.setSex("M");                  //第二个user实体         Userinfo user2 = new Userinfo();         user2.setName("winnie");         user2.setSex("F");         //创建第二个user实体与第二个room实体的关系,通过连接维护关系         Set<Room> roomSet = new HashSet<Room>();         roomSet.add(room2);         user2.setRooms(roomSet);                  //创建第一个room实体与第一、第二个user实体的关系,通过连接维护关系         //添加user实体到集合userSet         Set<Userinfo> userSet = new HashSet<Userinfo>();         userSet.add(user);         userSet.add(user2);         room.setUsers(userSet);         // 启动Session         Session session = HibernateSessionFactory.getSession();         // 启动事务         Transaction tx = session.beginTransaction();         // 持久化room实体         //此时将更新room和userinfo以及维护关系的roomusers         session.save(room);         tx.commit();         HibernateSessionFactory.closeSession();                  // 启动Session         session = HibernateSessionFactory.getSession();         // 启动事务         tx = session.beginTransaction();                  //获取Room实体以成为持久化状态,此时将获取room的所有字段信息         Room roomF1 = (Room)session.get(Room.class, room.getId());                  //通过外连接roomusers获取userinfo对应字段信息         Iterator<Userinfo> iF1 = roomF1.getUsers().iterator();         while(iF1.hasNext()) {              Userinfo userF = iF1.next();             System.out.println(userF.getId());             System.out.println(userF.getName());             System.out.println(userF.getSex());         }                  Room roomF2 = (Room)session.get(Room.class, room2.getId());                  Iterator<Userinfo> iF2 = roomF2.getUsers().iterator();         while(iF1.hasNext()) {              Userinfo userF = iF2.next();             System.out.println(userF.getId());             System.out.println(userF.getName());             System.out.println(userF.getSex());         }                  tx.commit();         HibernateSessionFactory.closeSession();     }     public static void main(String[] args) {         Demo demo = new Demo();         demo.test();     } }
http://www.itnose.net/detail/523443.html 2014-02-06 12:40   [Hibernate]

hibernate中的HQL连接MySQL多张的问题

假设我数据库有这样两张   teacher(tid,tname,title) 和  student(sid,sname,age,tid), 将teacher的ID作为student的外键,然后在teacher.java和
http://www.itnose.net/detail/443382.html 2014-01-04-15:29   [J2EE]

hibernate连接,插入数据。求指教

看在我这么晚还在学习的份上。大家给点鼓励吧。。能帮我解决问题是对我最好的鼓励。。感激不尽。。 最近在学hibernate。学到映射关系,想自己综合的练练手。但是插入数据抛了一个异常: org.hibernate.MappingException: Unknown entity: java.util.HashSet at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:628) at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1366) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547) at com.test.bean.TestHibernate.main(TestHibernate.java:79) 先看看pojo类:胜略getter,setter方法了。 主要关系是:课程与学生是多对多的关系。班级与学生是一对多的关系         /**  * 学生类  */ private String id; private String name; private int age; private Set<Course> course;         /**  * 班级类  */ private String id; private String name; private Set<Student> student;         /**  * 课程类  */ private String id; private String name; private Set<Student> student; 再看看映射文件: student.hbm.xml: <class name="com.test.bean.Student" table="student"> <id name="id" column="id" type="string"> <generator class="uuid"/> </id> <property name="name" column="studentName" type="string"/> <property name="age" column="Studentage" type="int" /> <set name="course" table="student_course" cascade="all" > <key column="student_id"/> <many-to-many class="com.test.bean.Course" column="course_id" /> </set> </class> course.hbm.xml <class name="com.test.bean.Course" table="course"> <id name="id" column="id" type="string"> <generator class="uuid"/> </id> <property name="name" column="courseName" type="string"/> <set name="student" table="student_course" cascade="all"> <key column="student_id"/> <many-to-many class="com.test.bean.Student" column="course_id"  /> </set> </class> 还有一个team.hbm.xml <class name="com.test.bean.Team" table="Team"> <id name="id" column="id" type="string"> <generator class="uuid"></generator> </id> <property name="name" column="teamName" type="string" /> <set name="student" cascade="all" inverse="true" fetch="select"> <key column="team_id"></key> <one-to-many class="com.test.bean.Student" /> </set> </class> 最后就是测试了: private static SessionFactory sessionfactory; static{ try { //创建会话工厂 sessionfactory=new Configuration().configure().buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Session session=sessionfactory.openSession(); Transaction tx=null; Team team=new Team(); team.setName("team1"); team.setStudent(new HashSet<Student>()); Student stu1=new Student(); stu1.setAge(19); stu1.setName("cc"); Student stu2=new Student(); stu2.setAge(20
http://www.itnose.net/detail/218276.html 2014-01-02-10:30   [J2EE]

hibernate连接oracle 创建标示符无效 高人来

;org.hibernate.tool.hbm2ddl.SchemaUpdate execute 严重: ORA-00942: 或视图不存在 2014-11-13 15:14:52 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
http://www.itnose.net/detail/16850.html 2013-12-31-11:46   [J2EE]

Hibernate】(3)Hibernate操作

1. 单一主键 这个是在我们生成的Student.hbm.xml中配置的: <hibernate-mapping> <class name="com.thr.bean.Student" table="STUDENT"> <id name="id" type="int"> <column name="ID" /> <generator class="assigned" /> </id> 我们将hbm2ddl.auto配置为update <property name="hbm2ddl.auto">update</property> (1). assigned:由Java应用程序负责生成(手工赋值) 手工赋值就是我们之前所写的那种方式: Student s = new Student(); s.setName("李四"); s.setGender("男"); s.setBirthday(new Date()); s.setAddress("北京"); session.save(s); // 保存对象进入数据库 这个方法执行第一次的时候是成功的,id自动给值0,但是执行第二次的时候就报错了,应为id默认还是0,就会主键冲突。 (2). native:由底层数据库自动生成标识符,如果是MySQL就是increment,如果是Oracle就是sequence,等等 使用native的,如果不置顶id的话它默认会按照从1开始的自动增涨下去,所以当执行添加两次数据后,不会报错,并且id是1、2、3这样子排列下去的。即使你手工指定了id的值,也是不起作用的,插入到数据库中的值也是按照原来的递增顺序添加的。 2. 基本类型 Student.hbm.xml文件中 <property name="birthday" type="java.util.Date"> <column name="BIRTHDAY" /> </property> java.util.Date是Java中的格式,是包括年月日时分秒的。 type类型如果是date就是只有年月日的格式。 type类型如果是time就是只有时分秒的格式。 type类型如果是timestamp就是包含年月日时分秒的格式。 date、time和timestamp这里是hibernate的数据类型。 3. 对象类型 MySQL不支持标准SQL的CLOB类型,在MySQL中,用TEXT、MEDIUMTEXT和LONGTEXT类型来表示长度超过255的长文本数据。 给之前的Student类添加一个新的属性: private Blob picture; 注意,这里需要导入的是java.sql.Blob类 然后需要删除我们之前的Student.hbm.xml文件,重新生成一遍,然后编写方法写入数据库: @Test public void testWriteBlob() throws Exception { Student s = new Student(1, "张三", "男", new Date(), "西安"); // 先获取照片文件 File f = new File("F:" + File.separator + "qtww.jpg"); InputStream is = new FileInputStream(f); Blob image = Hibernate.getLobCreator(session).createBlob(is, is.available()); s.setPicture(image); session.save(s); } 再写一个读取图片文件到本地的方法: @Test public void testReadBlob() throws Exception { // 这里第二个参数是学生的主键 Student s = (Student) session.get(Student.class, 1); Blob image = s.getPicture(); InputStream is = image.getBinaryStream(); File f = new File("D:/head.jpg"); f.createNewFile(); OutputStream os = new FileOutputStream(f); byte[] buff = new byte[is.available()]; is.read(buff); os.write(buff); is.close(); os.close(); } 4. 组件属性 实体类中的某个属性属于用户自定义的类的对象。 增加新的Address实体类: public class Address { private String postcode; private String phone; private String address; }生成构造方法、get和set方法 修改Student类,加入这一个属性。 修改Student.hbm.xml文件,删除原来的address属性,在<class>标签内增加: <component name="address" class="com.thr.bean.Address"> <property name="postcode" column="POSTCODE"></property> <property name="phone" column="PHONE"></property> <property name="address" column="ADDRESS"></property> </component>修改测试代码: @Test public void testSaveStudent() { // 生成学生对象 // Student s = new Student(1, "张三", "男", new Date(), "西安"); Student s = new Student(); s.setId(1000); s.setName("李四"); s.setGender("男"); s.setBirthday(new Date()); // s.setAddress("北京"); Address address = new Address("710065", "0298856445", "西安市"); s.setAddress(address); session.save(s); // 保存对象进入数据库 }运行后,我们发现在数据库中,新增了3个varchar字段存放我们刚才新建的那个实体类Address。 5. 单CRUP操作实例 首先要修改策略为update。 @Test public void testGetStudent() { Student s = (Student) session.get(Student.class, 1000); System.out.println(s); } @Test public void testLoadStudent() { Student s = (Student) session.load(Student.class, 1000); System.out.println(s); } @Test public void testUpdateStudent() { Student s = (Student) session.get(Student.class, 1000); s.setGender("女"); System.out.println(s); } @Test public void testDeleteStudent() { Student s = (Student) session.get(Student.class, 1000); session.delete(s); System.out.println(s); }get和load的区别: (1). 在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,返回持久化对象。而load方法会在调用后返回一个代理对象,该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出sql语句。 (2). 查询数据库中不存在的数据时,get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException。 版权声明:本文为博主原创文章,未经博主允许不得转载。
http://www.itnose.net/detail/6332781.html 2015-07-31 15:31   [Hibernate]

  1  2  3  4  5 下一页>