我的实体类映射如下:
@Entity @Audited @Table(name="messages_locale") public class Locale { @Id @GeneratedValue @Getter @Setter //Project Lombok's annotations, equal to generated getter and setter method private int id; (...)
我创建干净的新数据库和属性:
<prop key =“ hibernate.hbm2ddl.auto”>创建</ prop>
<prop key =“ hibernate.hbm2ddl.auto”>
</ prop>
为什么在创建数据库后,地狱(抱歉,此错误浪费了将近两天),我的postgres数据库中有一个序列?
CREATE SEQUENCE hibernate_sequence INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 2 CACHE 1; ALTER TABLE hibernate_sequence OWNER TO postgres;
我不想有一个序列,我只是想自动增加自动生成的值。
在PostgreSQL中,自动增量使用SERIAL伪类型进行处理。您在执行时使用此类型CREATE TABLE。
SERIAL
CREATE TABLE
现在要点-这种SERIAL伪类型创建一个序列。PostgreSQL使用创建的序列来处理自动增量。该id列的默认值为- nextval('your_sequence_name')。
PostgreSQL
id
nextval('your_sequence_name')
在Hibernate中针对User实体:
User
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_seq_gen") @SequenceGenerator(name = "users_seq_gen", sequenceName = "users_id_seq") public Long getId() { return id; }
在这里阅读:
http://www.postgresql.org/docs/8.4/static/datatype-numeric.html#DATATYPE- SERIAL
http://www.neilconway.org/docs/sequences/