一、添加方式
(1)写在属性字段上面
(2)写在属性的get访问器的上面
二、属性级别的注解
三、@Id
@Id:必须,定义了映射到数据库表的主键的属性,一个实体类可以有一个或者多个属性被映射为主键,可置于主键属性或者getXxxx()前
注意:如果有多个属性定义为主键属性,该实体类必须实现serializable接口
此时没有生成数据表,因为MySQL规定String类型的字段为主键,不能过长,必须指定长度小一些
可以添加多个属性作为联合主键,但是String类型的属性长度默认是255,太长了不能作为主键,可通过@column的length来设置长度小一些
四、@GeneratedValue
如果把字段的类型改为String类型,生成策略一样是自动的,跟上一章所说的一样,String类型作为主键,生成的字符长度默认为255,超过了mysql规定的字符串主键的长度,所以此操作未生成数据表
指定长度后,还是不能生成数据表
对于 MySQL 来讲,@GeneratedValue ==@GeneratedValue(strategy=GenerationType.AUTO)。
主键是字符串,主键生成策略就为手工赋值,不能用JPA提供的主键生成策略,要用Hibernate提供的主键生成器,其中GenericGenerator(name)与generator中的值对应,assigned就是手工赋值。否则使用AUTO的话即使长度也规定了,运行也通过了,但是还是生成不了表。
五、添加一条记录
六、@Column
七、@Embedded
@Embedded是注释属性的,表示该属性的类是嵌入类
注意:同时嵌入类最好也标注@Embeddable注解
@Embedded和@Embeddable只需要用一个(同时用也一样),而且效果一样
八、@EmbeddedId
@EmbeddedId使用嵌入式主键类实现复合主键。
注意:嵌入式主键类必须实现Serializable接口,必须有默认的public无参构造方法,必须覆盖equals和hashCode方法。
新增一条记录
九、@Transient
属性级别注解@Transient:可选,表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic。
没有salary这个字段生成
网友评论