数据表:
create table 'product_category'( 'category_id' int not null auto_increment, 'category_name' varchar(64) not null comment '类目名字', ......
domain:
@Entity public class ProductCategory { @Id @GeneratedValue private Integer categoryId; private String categoryName; private Integer categoryType; setter... getter...
Repository:
public interface ProductCategoryRepository extends JpaRepository<ProductCategory,Integer> { }
测试代码:
@Test public void saveTest(){ ProductCategory productCategory = new ProductCategory(); productCategory.setCategoryName("测试b"); productCategory.setCategoryType(3); repository.save(productCategory); }
报错:Caused by: java.sql.SQLSyntaxErrorException: Table 'sell.hibernate_sequence' doesn't exist
解决:在domain实体类指明主键生成策略,保持数据库一致
@Entity public class ProductCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer categoryId; private String categoryName; private Integer categoryType;
JPA四种生成策略了解下。
疑点:原文使用@GeneratedValue注解,即@GeneratedValue(strategy = GenerationType.AUTO),不是应该根据数据库支持的主键生成策略自动选择合适的吗,数据库中使用了auto_increment,为什么这边没有支持而报错?