`
easyboy
  • 浏览: 20242 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

JPA——实体关系映射(一对多@OneToMany)

阅读更多
好久没有写代码遇到jpa一对多又记不住注解怎么写了。现在权且记录一下以便以后回查,遇到单向一对多的实现场景不知道怎么写的情况,记录如下:
tbl_position——治疗部位
idcodenameremarkcreatorcreate_date

tbl_handler——治疗手法
idcodenameposition_idfile_nameremarkcreatorcreate_date


@Entity
@Table(name="tbl_position")
    public class Position implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;

        @OneToMany(casade={CascadeTypeType.ALL})
        @JoinColumn(name="position_id")
        public List<Handler> getHandlerList() {
              return handlerList;
        }
        ....

一对多@OneToMany注解说明:
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface OneToMany {
    Class targetEntity() default void.class;
    CascadeType[] cascade() default {};
    FetchType fetch() default EAGER;
    String mappedBy() default "";
}

# targetEntity属性表示默认关联的实体类型,默认为当前标注的实体类;
因为一对多的实体集合时保存在集合类中,因此必须指明集合类中保存的具体类型:
1)指定集合泛型的具体类型;如:public List<Handler> getHandlerList() {...
2)指定targetEntity属性类型;如:@OneToMany(targetEntity=Handler.class,casade={CascadeTypeType.ALL})
# cascade属性表示与此实体一对一关联的实体的联级样式类型。联级样式上当对实体进行操作时的策略。
说明:在定义关系时经常会涉及是否定义Cascade(级联处理)属性,担心造成负面影响.
        ·不定义,则对关系表不会产生任何影响
        ·CascadeType.PERSIST (级联新建)
        ·CascadeType.REMOVE (级联删除)
        ·CascadeType.REFRESH (级联刷新)
        ·CascadeType.MERGE (级联更新)中选择一个或多个。
        ·还有一个选择是使用CascadeType.ALL ,表示选择全部四项
# fetch属性是该实体的加载方式,有两种:LAZY和EAGER。默认为惰性加载,一般也建议使用惰性加载。
# mappedBy属性用于双向关联实体时使用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics