zoukankan      html  css  js  c++  java
  • Hibernate对jpa annotation的支持 java程序员

    1、@Entity
    @Table(name="t_user1")

    public class User1 {}                    //如果是group则必须得重命名表,因为group是关键字


    @Id
    //采用数据库自增方式生成主键
    //@GeneratedValue(strategy=GenerationType.AUTO)
    @GeneratedValue
    public int getId() {
    return id;
    }


    @Column(name="create_time")
    public Date getCreateTime() {
    return createTime;
    }




    //年龄不持久化,则数据库里没有
    @Transient
    public int getAge() {
    return age;
    }




    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)//主键由数据库自动生成(主要是自动增长型) 
    public int getId() {
    return id;
    }





    @Id
    @GeneratedValue(strategy=GenerationType.TABLE)                   //使用一个特定的数据库表格来保存主键。 
    public int getId() {
    return id;
    }



    //采用hibernate uuid生成器,此时id类型必须改成String类型,不能是int类型,而上面所有的是利用数据库自动分配,则id是int类型
    @Id
    @GenericGenerator(name="myIdGenerator",strategy="uuid")
    @GeneratedValue(generator="myIdGenerator")
    public String getId() {
    return id;
    }



    @ManyToOne                                                    //此时manytoone是自动生成外键class_id,但使用joincolumn()就可以改变外键名称
    @JoinColumn(name="classesid")
    public Classes getClasses() {
    return classes;
    }

    //mappedBy在哪一端,哪一端就不维护关系,它成为了关系的被管理端
    //向当于hibernate中的inverse=true
    //如果采用了泛型,可以不用采用targetEntity属性
    @OneToMany(mappedBy="classes",targetEntity=Student.class)
    @JoinColumn(name="classesid")
    public Set getStudents() {
    return students;
    }



    //因为集合使用泛型所以不再使用targetEntity来指定类型
    @ManyToMany                      //要使用第三方表
    @JoinTable(
    name="t_user_role",
    joinColumns={@JoinColumn(name="user_id")},
    inverseJoinColumns={@JoinColumn(name="role_id")}  //对端的外键
    )
    public Set<Role> getRoles() {
    return roles;
    }

    @ManyToMany(mappedBy="roles")         //让对端维护,让user端维护
    public Set<User> getUsers() {
    return users;
    }





    采用JPA映射每棵类继承树一张表
    @Entity
    @Table(name="t_animal")
    @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)
    public class Animal {}

    @Entity
    @DiscriminatorValue(value="B")
    public class Bird extends Animal {

    @Entity
    @DiscriminatorValue(value="P")
    public class Pig extends Animal {




    采用JPA映射每个类一张表

    @Entity
    @Table(name="t_animal")
    @Inheritance(strategy=InheritanceType.JOINED)
    public class Animal {

    @Entity
    public class Pig extends Animal {

    @Entity
    public class Bird extends Animal {




    采用JPA映射每个具体类一张表

    @Entity
    @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
    public class Animal {


    private int id;

    private String name;

    private boolean sex;


    @Id
    public int getId() {
    return id;
    }

    @Entity
    public class Bird extends Animal {

    @Entity
    public class Pig extends Animal {

  • 相关阅读:
    典型并发任务
    第九章使用共享变量实现并发
    第八章goroutine和通道
    第七章接口
    第六章方法
    第一章
    第四章复合数据类型
    第三章基础数据类型
    Django其他
    VUE学习日记(五) ---- 组件定义 component
  • 原文地址:https://www.cnblogs.com/java20130725/p/3215765.html
Copyright © 2011-2022 走看看