@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.TABLE, generator="TableGen")
@TableGenerator(name="TableGen", table="ID_GEN",
pkColumnName="KEYID", valueColumnName="KEYVALUE", pkColumnValue="SERVICE_ID", allocationSize=1)
这里面pkColumnName, valueColumnName和pkColumnValue分别表示什么?有的帖子直接就翻译成中文名,不是很理解。pkColumnName表示主键列名?就像SQL里面一张表的主键对应的列名吗?后面几个参数呢?
@TableGenerator中的name对应@GeneratedValue中的generator,就是自定义个名字,table是库中生成的管理主键策略的那张表名,这张表会自动生成,里面有两个列,pkColumnName,valueColumnName就是为这两个列取的列名,不写的话应该是有默认的名称,pkColumnValue是使用这个策略的类的id名称,自定义的,allocationSize是主键值增长的幅度,还有个initialValue初始值,第一次生成的值是初始值+1,但初始值这东西要用@TableGenerator新版本才有效,需要设置spring.jpa.hibernate.use-new-id-generator-mappings=true,另外allocationSize设置<=1的话是无法使用优化器的,这个是生成主键时对库的访问策略,涉及到效率的事情,pool,pooled策略什么的,具体去网上查看吧