Hibernate 注解
总结一些最近在实体类中用到的Hibernate注解,
用自己的话加以解释,有可能不标准,仅供参考
日后还会补充:
实体类注解:@Entity
实体类映射到数据库表@Table()
以Json格式保存到表:@JsonIgnoreProperties(ignoreUnknown=true)
例:
[java]
@Entity
@Table(name = "projects")
@JsonIgnoreProperties(ignoreUnknown=true)
public class Project {
}
Id标示:@Id
列自增:@GeneratedValue
这两个注解我一般成对使用
例:
[java]
@Id
@GeneratedValue
public Integer getId() {
return id;
}
一对一映射:@OneToOne
一对多映射:@OneToMany(fetch = FetchType.LAZY, mappedBy = "project")
例:
[java]
@OneToMany(fetch = FetchType.LAZY, mappedBy = "project")
public List<FundDetail> getFundDetails() {
return this.fundDetails;
}
多对一映射:@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "city_id", nullable = false)
例:
[java]
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id", nullable = false)
@JsonIgnore//
public ProjectCategory getProjectCategory() {
return this.projectCategory;
}
注意:有的时候Json格式保存的属性一对多映射会引起栈溢出所以加上注解@JsonIgnore
详情见:StackOverflowError栈溢出错误
@Column
属性映射到列:@Column()
例:
[java]
@Column(name="user_qq")
public String getUserQQ() {
return this.userQQ;
}
(1)
name 可选,列名(默认值是属性名)
(2)
unique 可选,是否在该列上设置唯一约束(默认值false)
(3)
nullable 可选,是否设置该列的值可以为空(默认值false)
(4)
insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true)
(5)
updatable 可选,该列是否作为生成的update语句中的一个列(默认值true)
(6)
columnDefinition 可选: 为这个特定列覆盖SQL DDL片段 (这可能导致无法在不同数据库间移植)
(7)
table 可选,定义对应的表(默认为主表)
(8)
length 可选,列长度(默认值255)
(8)
precision 可选,列十进制精度(decimal precision)(默认值0)
(10)
scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)
@Transient这个用的不是太好.我的理解是不映射到数据表中
例:
[java]
@Transient
String getLengthInMeter() {
...
}
补充:软件开发 , Java ,