总结一些最近在实体类中用到的Hibernate注解,
用自己的话加以解释,有可能不标准,仅供参考
日后还会补充:
实体类注解:@Entity
实体类映射到数据库表@Table()
以Json格式保存到表:@JsonIgnoreProperties(ignoreUnknown=true)
例:
@Entity
@Table(name = "projects")
@JsonIgnoreProperties(ignoreUnknown=true)
public class Project {
}
Id标示:@Id
列自增:@GeneratedValue
这两个注解我一般成对使用
例:
@Id
@GeneratedValue
public Integer getId() {
return id;
}
一对一映射:@OneToOne
一对多映射:@OneToMany(fetch = FetchType.LAZY, mappedBy = "project")例:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "project")
public List<FundDetail> getFundDetails() {
return this.fundDetails;
}
多对一映射:@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "city_id", nullable = false)
例:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id", nullable = false)
@JsonIgnore//
public ProjectCategory getProjectCategory() {
return this.projectCategory;
}
注意:有的时候Json格式保存的属性一对多映射会引起栈溢出所以加上注解@JsonIgnore
@Column
属性映射到列:@Column()
例:
@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
String getLengthInMeter() {
...
}
还有一个要说的是:注解不一定一定加载get方法前,也可以直接加到属性前.
先写这么多,日后补充.
参考文档:http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/