当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,