jpa知识点

@NotFound(action=NotFoundAction.IGNORE)

使用hibernate 
注解配置实体类的关联关系,在many-to-one,one-to-one关联中,一边引用自另一边的属性,如果属性值为某某的数据在数据库不存在了,hibernate默认会抛出异常。解决此问题,加上如下注解就可以了:
@NotFound(action=NotFoundAction.IGNORE),意思是找不到引用的外键数据时忽略,NotFound默认是exception

-------------------------------------------------------------------
cascade = CascadeType.REFRESH,cascade=CascadeType.ALL

cascade表示级联操作  

 

Cascade 级联操作 
CascadeType. PERSIST 级联持久化 ( 保存 ) 操作 
CascadeType. MERGE 级联更新 ( 合并 ) 操作 
CascadeType. REFRESH 级联刷新操作,只会查询获取操作 
CascadeType. REMOVE 级联删除操作 
CascadeType. ALL 级联以上全部操作 
Fetch 抓取是否延迟加载,默认情况一的方为立即加载,多的一方为延迟加载 
mappedBy 关系维护 
mappedBy= "order" 表示在 OrderItem 类中的 order 属性来维护关系

 



综上:大多数情况用CascadeType.MERGE就能达到级联跟新又不报错,用CascadeType.ALL时要斟酌下CascadeType.REMOVE

@Fetch:

定义了加载关联关系的获取策略. FetchMode 可以是

SELECT (在需要加载关联的时候触发select操作),     SUBSELECT(只对集合有效,使用了子查询策略,详情参考Hibernate参考文档)

JOIN (在加载主实体(owner entity)的时候使用SQL JOIN来加载关联关系).

JOIN 将覆写任何延迟属性 (通过 JOIN策略加载的关联将不再具有延迟性).

posted @ 2015-02-28 15:03  tyb1222  阅读(489)  评论(0编辑  收藏  举报