如何使用JPA批注对MYSQL自动增量字段进行批注

直截了当,问题是将对象Operator保存到MySQL DB中。在保存之前,我尝试从该表中进行选择并起作用,因此与数据库的连接也是如此。


这是我的Operator对象:


@Entity

public class Operator{


   @Id

   @GeneratedValue

   private Long id;


   private String username;


   private String password;



   private Integer active;


   //Getters and setters...

}

为了保存,我使用JPA EntityManager的persist方法。


这是一些日志:


Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)

com.mysql.jdbc.JDBC4PreparedStatement@15724a0: insert into Operator (active,password, username, id) values (0, 'pass', 'user', ** NOT SPECIFIED **)

我的看法是,问题是自动递增的配置,但我不知道在哪里。


尝试了一些我在这里看到的技巧: Hibernate不尊重MySQL auto_increment主键字段,但是这些都不起作用


如果需要任何其他配置文件,我将提供它们。


DDL:


CREATE TABLE `operator` ( 

`id` INT(10) NOT NULL AUTO_INCREMENT,

`first_name` VARCHAR(40) NOT NULL,

`last_name` VARCHAR(40) NOT NULL,

`username` VARCHAR(50) NOT NULL,

`password` VARCHAR(50) NOT NULL,

`active` INT(1) NOT NULL,

PRIMARY KEY (`id`)

)


摇曳的蔷薇
浏览 577回答 3
3回答

森栏

请确保id数据类型为Long而不是String,如果它将为字符串,则@GeneratedValue批注将不起作用,并且为@Id @GeneratedValue(strategy=GenerationType.IDENTITY)private String id;create table VMS_AUDIT_RECORDS (id **varchar(255)** not null auto_increment primary key (id))那应该是create table VMS_AUDIT_RECORDS (id **bigint** not null auto_increment primary key (id))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
MySQL