Hibernate常用注释收集1
嵌入式对象(又称组件)也就是别的对象定义的属性
组件类必须在类一级定义 @Embeddable 注解。在特定的实体关联属性上使用
@Embeddable 和 @AttributeOverride 注解可以覆盖该属性对应的嵌入式对象的列映射。
@Entity
public class Person implements Serializable {
// Persistent component using defaults
Address homeAddress;
@Embedded
@AttributeOverrides( {
@AttributeOverride(name=”iso2″, column = @Column(name=”bornIso2″) ),
@AttributeOverride(name=”name”, column = @Column(name=”bornCountryName”) )
} )
Country bornIn;
…
}
@Embeddable
public class Address implements Serializable {
String city;
Country nationality; //no overriding here
}
@Embeddable
public class Country implements Serializable {
private String iso2;
@Column(name=”countryName”) private String name;
public String getIso2() { return iso2; }
public void setIso2(String iso2) { this.iso2 = iso2; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
…
}
Person 类定义了 Address 和 Country 对象,具体两个类实现见上。
无注解属性默认值:
? 属性为简单类型,则映射为 @Basic
? 属性对应的类型定义了 @Embeddable 注解,则映射为 @Embedded
? 属性对应的类型实现了Serializable,则属性被映射为@Basic并在一个列中保存该对象的
serialized版本。
? 属性的类型为 java.sql.Clob or java.sql.Blob, 则映射到 @Lob 对应的类型。
映射主键属性
@Id 注解可将实体Bean中某个属性定义为主键,使用@GenerateValue注解可以定义该标识
符的生成策略。
? AUTO – 可以是 identity column, sequence 或者 table 类型,取决于不同底层的数据库
? TABLE – 使用table保存id值
? IDENTITY – identity column
? SEQUENCE – seque
nce
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator=”SEQ_STORE”)
public Integer getId() { … }
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
public Long getId() { … }
AUTO 生成器,适用与可移值的应用,多个@Id可以共享同一个 identifier生成器,只要把
generator属性设成相同的值就可以。通过@SequenceGenerator 和 @TableGenerator 可以配
置不同的 identifier 生成器。
pk-column-name=”key”
value-column-name=”hi”
pk-column-value=”EMP”
allocation-size=”20″/>
//and the annotation equivalent
@javax.persistence.TableGenerator(
name=”EMP_GEN”,
table=”GENERATOR_TABLE”,
pkColumnName = “key”,
valueColumnName = “hi”
pkColumnValue=”EMP”,
allocationSize=20
)
allocation-size=”20″/>
//and the annotation equivalent
@javax.persistence.SequenceGenerator(
name=”SEQ_GEN”,
sequenceName=”my_sequence”,
allocationSize=20
)
The next example shows the definition of a sequence generator in a class scope:
@Entity
@javax.persistence.SequenceGenerator(
name=”SEQ_STORE”,
sequenceName=”my_sequence”
)
public class Store implements Serializable {
private Long id;
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator=”SEQ_STORE”)
public Long getId() { return id; }
}
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《Hibernate常用注释收集1》
本文地址:http://www.xiupu.net/archives-272.html
关注公众号:
微信赞赏
支付宝赞赏