声明在Class上的
@Entity 声明某个类为实体类,对应着数据库中的一张表
@Table(name="users") 声明这个实体类生成的数据表名字
声明在属性上的
@Column 定义数据表字段的信息
1. type (可选,默认为string类型)定义字段的类型
- string: 对应数据库的VARCHAR
- integer: 对应数据库的INT
- smallint: 对应数据库的SMALLINT
- bigint: 对应数据库的BIGINT
- boolean: 对应数据库的TINYINT
- decimal: 对应数据的DECIMAL
- date: 对应数据库的DATETIME
- time: 对应数据库的TIME
- datetime:对应数据库的DATETIME/TIMESTAMP
- datetimetz: 对应数据库的DATETIME/TIMESTAMP, 生成的phpDateTime对象跟时区有关
- text: 对应着数据库的BLOG
- object: 对应着数据库的BLOG, 主要用于存序列化的对象
- array: 对应着数据库的BLOG, 主要用于存序列化的数组
- simple_array: 对应着数据库的BLOG, 用于数组的implode()和explode(),使用该值必需确保存入的值不能包含","
- json_array:对应着数据库的BLOG, 主要用于存储json数据
- float: 对应着数据库的FLOAT,注意是以“.”为分隔符
- guid: 对应着数据库的GUID/UUID
- blob: 对应着数据库的BLOG,存储二进制流文件
注意,上面的日期类型都是以当前的php环境的时区获得。如果想实现多时区的应用参考cookbook entry
2.name (可选,默认为实体类的属性名)定义字段的名字
3.length (可选,默认为255个字符)定义字段的长度, 仅用于type为string的时候
4.unique (可选,默认为false) 定义字段是否唯一
5.nullable (可选,默认为false)定义字段是否可以为null
6.presision (可选,默认为0)定义字段的精度,该值仅仅作用于type为decimal的时候
7.scale (可选,默认为0)定义字段的取值范围,该值仅仅作用于type为decimal的时候
8.columnDefinition (可选)允许自定义一个DDL片段进行创建数据表列。(注意:该属性经常混淆SchemaTool总是检测数据表列的改变)
9.options (可选) 当生成DDL的时候以键值对的形式传递给底层的数据库平台
@Id 定义主键
@GeneratedValue 主键生成策略
1.AUTO(默认)
2.SEQUENCE
3.IDENEITY
4.TABLE
5.NONE
@SequenceGenerator 定义该列的附加信息,针对Oracle或者postgres,如:
@SequenceGenerator(sequenceName="message_seq", initialValue=1, allocationSize=100)
allocationSize默认为10