@Entity:用来标志实体类,知名这是一个和数据库表映射的实体类
@Id注解指明这个属性映射为数据库的主键
@GeneratedValue注解默认使用主键生成方式为自增,hibernate会自动生成一个名为HIBERNATE_SEQUENCE的序列。
@Table实体类映射表表名称,如果不加这个注解会默认使用类名
@Column使用来映射属性名和字段名,不注解的时候hibernate会自动根据属性名字生成数据表的字段名。如属性name映射生成字段NAME;多字母属性如testName会自动映射为TEST_NAME。表明映射规则也是如此。
1 @Entity2 @Table(name="datasource")3 public class Source implementsIdGeneratorable{4
5 @Id6 @Column(length=20)7 privateString id;8
9 privateString name;10
11 privateString chinese;12
13 privateString jdbcDirver;14
15 privateString driverClass;16
17 privateString url;18
19 @Column(name="u_name")20 privateString username;21
22 @Column(name="pwd")23 privateString password;24
25 privateString charset;26
27 privateString sortRule;28
29 privateString databaseName;30
31 privateString addTime;32
33 private Integer state =Constant.ACTIVATE_SATE;34
35 @OneToOne(targetEntity=UploadFile.class,fetch=FetchType.EAGER)36 @JoinColumn(name="file_id",referencedColumnName="id")37 privateUploadFile association;38
39 @OneToMany(targetEntity=DataTable.class,fetch=FetchType.LAZY,mappedBy="source")40 @JsonIgnore41 private Listtables;42 //省略getter和setter方法
43 }
1 @Entity2 public class DataTable implementsIdGeneratorable{3
4 @Id5 privateString id;6
7 privateString name;8
9 privateString chinese;10
11 @ManyToOne(targetEntity=Source.class,fetch=FetchType.LAZY)12 @JoinColumn(name="data_source_id",referencedColumnName="id")13 @JsonIgnore14 privateSource source;15
16 @OneToMany(targetEntity=TableColumn.class,fetch=FetchType.LAZY,mappedBy="dataTable")17 @JsonIgnore18 private Listcolumns;19
20 private Date addTime;
}
关联配置:
@OneToOne 配置一对一关联,属性targetEntity指定关联的对象的类型 。
@JoinColumn指定该实体类对应的表中引用的表的外键,name属性指定外键名称,referencedColumnName指定应用表中的字段名称
@OneToMany注解“一对多”关系中‘一’方的实体类属性(该属性是一个集合对象),targetEntity注解关联的实体类类型,mappedBy注解另一方实体类中本实体类的属性名称
@ManyToOne注解“一对多”关系中‘多’方的实体类属性(该属性是单个对象),targetEntity注解关联的实体类类型