Hibernate 一对多 多对一 实例 及一些 问题(2)字典项的使用

来源:互联网 发布:string转byte数组 编辑:程序博客网 时间:2024/05/07 16:39

有时在多对一时,只有插入时需要用到 外键值(即一对象的主键),而查询时需要得到完整对象

/** *  */package com.wonders.task.sample.bo;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;import javax.persistence.Transient;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.GenericGenerator;import org.hibernate.annotations.Where;/**  * @ClassName: Student  * @Description: TODO(这里用一句话描述这个类的作用)  * @author zhoushun  * @date 2014年2月27日 上午11:48:30  *   */@Entity @Table(name="Z_STUDENT") public class Student {private String id;private String name;private Clazz clazz;private String classId;@Id@GeneratedValue(generator="system-uuid")@GenericGenerator(name="system-uuid", strategy = "uuid")@Column(name = "ID")public String getId() {return id;}public void setId(String id) {this.id = id;}@Column(name = "NAME", length = 500)public String getName() {return name;}public void setName(String name) {this.name = name;}//@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE}) //@ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.LAZY) //@JoinColumn(name="class_id")  @ManyToOne(cascade = CascadeType.REFRESH, fetch=FetchType.EAGER)  //@Cascade(value=org.hibernate.annotations.CascadeType.SAVE_UPDATE)@JoinColumn(name="class_id" ,nullable = true,insertable=false,updatable=false)//这2个属性保证 不会插入对象,只对查询有效     //student类中对应外键的属性:classid //@Where(clause = "removed=0")public Clazz getClazz() {return clazz;}public void setClazz(Clazz clazz) {this.clazz = clazz;}//@Transient@Column(name = "CLASS_ID", length = 50)public String getClassId() {return classId;}public void setClassId(String classId) {this.classId = classId;}}

insertable=false,updatable=false 只对查询有效

单向多对一,”一方“ 无需设置 onetomany

在bo内同时增加 外键字段 及 一的bo对象

插入时,从前台得到 clazzId 手动设置插入,而查询时通过取消延时加载 直接获取一方的 bo 对象。

这在 一 方 为 特定 字典项 表时 比较有用,可以避免 new 对象 及 load 对象。

0 0
原创粉丝点击