zoukankan      html  css  js  c++  java
  • Caused by: java.sql.SQLSyntaxErrorException: Table 'sell.hibernate_sequence' doesn't exist

    数据表:

    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,为什么这边没有支持而报错?

  • 相关阅读:
    汉语-词语:什么
    汉语-词语:甚么
    汉语-汉字:心
    汉语-词汇:头脑
    汉语-词语:冰冷
    汉语-词汇:冷静
    两个int类型的数据相加,有可能会出现超出int的表示范围。
    两个int类型的数据相加,有可能会出现超出int的表示范围。
    成员变量与局部变量的区别_
    函数额基本概述
  • 原文地址:https://www.cnblogs.com/kongieg/p/11381411.html
Copyright © 2011-2022 走看看