Hibernate项目开发总结

1:当对持久态对象进行更该时,会保持未被更该的字段值;但如果是自由态进行更新时,则未被更新的字段值为null;(注意持久态包括引用子段值也会自动给保存)


2: 在一对多关系对象中,删除一个对象(如果该对象没有级联)则不会删除对应关系的对象,反之则反;



3:在Form表单中用List<ObjectType>=new ArrayList();来收集数据并设置默认值时,可以不使用泛型。


4:但是用Hibernate查找数据时,若没报任何异常,则可去看看数据库该字段是否为Char类型.若为Char类型字段则需在Hql语句中加上 rtrim();例如 String hql="form User u where rtrim(u.name)=a";


5:但数据库某个字段为Char类型型时,但根据该字段去查值若出现查不到值时,则是未把该值string.trim() 去空。


6:编写了一个Struts Form表单一个java.util.data转换器;要仔细注意所导入的类


7:在一级二级三级的ID都必须是唯一键


8:<c:choose><c:when test=""></c:when></c:choose>只能单一选择;而<c:if test=""></c:if>可以多项选择判断


9:修改系统默认的 profile
   alter profile default limit connect_time unlimited


10:多字段模糊匹配关键字查询:
   对于SqlServer  可以SELECT * FROM orders o where concat(o.email,o.address) like like '%df%';
   对于Oracl select * from engage_resume where (human_name || human_address || human_postcode) like '%塑料袋减肥%'


11:在many-to-one 中的两个实体中如果两个表相映射的字段类型不完成一样则在映射加载时会报错.如一个表 cust_no 类型:char(17)  另一个表 nvarchar(17);


12:默认 inverse="false"  含义:允许当前当这端维护关系,true表示对方维护关系;


13:当使用聚合函数sum()所查询的结果集没有时,则返回的session.createQuery(hql).setParameter(0, ordId).uniqueResult()为null;如果不判断则会报错。


14:在实体关系配置文件中  fetch="select|join"  两个值,默认为select;如果设为join则会通过select语句使用外连接来加载其关联实体或集合;


15:实体收集可以 user.role.roleid  但要注意 user 的对象要把 role=new role() 才行;


16:Set集合排序,只需在<set order by="column"></set>  则可以排序了(默认Set集合是无序的)。


17:在使用hql查询时 select cust.custNo,ord.odrId from Orders ord left join  ord.odrCustomer cust  可以返回List<object[]>  若是select ord.odrId from Orders ord left join  ord.odrCustomer cust则不能返回object[] 数组;


18:hql占位符下标从0开始;

 

19:Hql语句Order by 字段不可用别名;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值