SRPING+SPRINGMVC+JAP+HIBERNATE

来源:互联网 发布:笛佛软件面试 编辑:程序博客网 时间:2024/05/22 17:22


1.如果使用hibernate-jap-2.0-api,会出现问题:

NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()




2.


@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。

例如有如下Cookie值:

  1. JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84 

参数绑定的代码:

  1. @RequestMapping("/displayHeaderInfo.do")  
  2. public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie)  {  
  3. }  

即把JSESSIONID的值绑定到参数cookie上。

 


2: QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions类组成   session = this.getSession();   Criteria cri = session.createCriteria(JdItemSerialnumber.class);   Criterion cron = Restrictions.like("customer",name);   cri.add(cron);   list = cri.list();   ==============================   比较运算符   HQL运算符                   QBC运算符                      含义      =                     Restrictions.eq()                  等于      <>                   Restrictions.not(Exprission.eq())  不等于      >                     Restrictions.gt()                  大于      >=                   Restrictions.ge()                  大于等于      <                     Restrictions.lt()                  小于      <=                   Restrictions.le()                  小于等于      is null             Restrictions.isnull()              等于空值      is not null      Restrictions.isNotNull()           非空值      like                 Restrictions.like()                字符串模式匹配      and                Restrictions.and()                 逻辑与      and                Restrictions.conjunction()         逻辑与      or                   Restrictions.or()                  逻辑或      or                   Restrictions.disjunction()         逻辑或      not                  Restrictions.not()                 逻辑非      in(列表)          Restrictions.in()                  等于列表中的某一个值      ont in(列表)         Restrictions.not(Restrictions.in())不等于列表中任意一个值      between x and y      Restrictions.between()             闭区间xy中的任意值      not between x and y  Restrictions.not(Restrictions..between()) 小于值X或者大于值y3: HQL   String hql = "select s.name ,avg(s.age) from Student s group by s.name";   Query query = session.createQuery(hql);   list = query.list();   ....4: 本地SQL查询   session = sessionFactory.openSession();   tran = session.beginTransaction();   SQLQuery sq = session.createSQLQuery(sql);   sq.addEntity(Student.class);   list = sq.list();   tran.commit();5: QID    Session的get()和load()方法提供了根据对象ID来检索对象的方式。该方式被用于事先知道了要检索对象ID的情况。 6.@JsonBackReference在 ONETOMANY端控制死循环



7. ajax中绝对路径要加上项目名  /em/org/isOrgExist



8.ModelAtribute的用法, 在form采用  name="a.bId"的方式,Spring也会帮你自动转换


9.DetachedCriteria 在做自链接的时候,子类信息会被父类覆盖,呆滞parent为空。


10. 当在查询功能钱增加了propagation readOnly之后,会出现取不出lazy数据的问题


11. easyyi datagrid 双击

onDblClickRow: function (index, row) {
                alert(row);
            }

 

12.返回结果映射到具体的类。可以是实体类,也可以是普通的pojo类。查询代码如下:

Query query = session.createSQLQuery(sql.toString()).setResultTransformer(Transformers.aliasToBean(CheckInfo.class));//CheckInfo为pojo类 

SQLQuery sqluery = session.createSQLQuery(sql).addEntity(User.class);//User为实体类,对应数据库的某个表 

 

如果存在返回多个实体的情况:

session.createSQLQuery("SELECT {user.*}, {role.*}  FROM user u, role r WHERE u.roleId= r.id")   .addEntity("user", User.class)   .addEntity("role", Role.class)    {user.*}的user就是 addEntity("user", User.class)里面的user

SQLQuery query = session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER);//指定别名的数据类型//多个别名可以连续写多个如:session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER).addScalar("别名1",Hibernate.INTEGER); 


0 0
原创粉丝点击