Hibernate注解(二)属性级别注解

作者: leeqico | 来源:发表于2018-06-28 17:18 被阅读45次

    一、添加方式

    (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这个字段生成

    相关文章

      网友评论

        本文标题:Hibernate注解(二)属性级别注解

        本文链接:https://www.haomeiwen.com/subject/vwbgyftx.html