IDEA中使用JPA向Mysql创建带有中文的枚举变量的表时,报枚举值重复错误!(Column ‘***‘ has duplicated value ‘?‘ in ENUM)

问题描述:

IDEA中使用JPA向Mysql创建带有中文的枚举变量的表时,报枚举值重复错误。Column ‘***’ has duplicated value ‘?’ in ENUM。

@Override
@Entity
@Data
public class Article  implements Serializable {
    @Id
    /**
     * Description: 由数据库控制,auto是程序统一控制
     */
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(nullable = false, unique = true)
    @NotEmpty(message = "标题不能为空")
    private String title;
    /**
     * Description: 枚举类型
     */
    @Column(columnDefinition="enum('她','我','你')")
    private String type;//类型
    /**
     * Description:  Boolean类型默认false
     */
    private Boolean available = Boolean.FALSE;
    @Size(min=0, max=20)
    private String keyword;
    @Size(max = 255)
    private String description;
    @Column(nullable = false)
    private String body;


   /**
    * Description: 创建虚拟字段
    */
   @Transient
    private List keywordlists;

    public List getKeywordlists() {

        return Arrays.asList(this.keyword.trim().split("|"));
    }
    public void setKeywordlists(List keywordlists) {
        this.keywordlists = keywordlists;

    }

}

IDEA报错:

	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at com.example.demo.JpaEntityDemoApplication.main(JpaEntityDemoApplication.java:10) ~[classes/:na]
Caused by: java.sql.SQLException: Column 'type' has duplicated value '?' in ENUM
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.15.jar:8.0.15]

分析:

在nvicat中执行IDEA中相同创建表代码:

create table article1234 (
id bigint not null auto_increment, 
available bit, 
body varchar(255) not null, 
description varchar(255), 
keyword varchar(20), 
title varchar(255) not null, 
type ENUM('你','我','她'), 
primary key (id)) engine=InnoDB

得到同样报错:

[SQL]create table article1234 (
id bigint not null auto_increment, 
available bit, 
body varchar(255) not null, 
description varchar(255), 
keyword varchar(20), 
title varchar(255) not null, 
type ENUM('你','我','她'), 
primary key (id)) engine=InnoDB


[Err] 1291 - Column 'type' has duplicated value '?' in ENUM

所以不是IDEA和JPA的问题。将enum中的值换为了非中文值,进行测试,测试成功,表成功创建。

原因:

数据库编码问题,导致表中enum枚举值的中文显示为?,所以Mysql报"?"重复错误。


解决方案:

将数据库编码设置为utf-8。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Intellij IDEA 是一款非常流行的 Java IDE,而 Spring JPA 是一种非常流行的持久化框架。在 IDEA 使用 Spring JPA 插件可以提高开发效率,下面是一些使用技巧: 1. 安装插件 打开 IDEA,点击“File” -> “Settings” -> “Plugins”,在搜索栏输入“Spring Data JPA”,选择“Browse repositories” ,找到插件并安装。 2. 配置数据源 在 IDEA 使用 Spring JPA 插件需要配置数据源。打开“Database”视图,点击“+”号,选择你的数据库类型,并填写相关信息即可。 3. 自动生成代码 在 IDEA 使用 Spring JPA 插件可以自动生成实体类、Repository 接口等代码。在项目右键点击“src/main/java”目录,选择“New” -> “Persistence” -> “Entity class”,填写实体类相关信息即可。 同样,在右键点击“src/main/java”目录,选择“New” -> “Persistence” -> “Repository interface”,填写 Repository 接口相关信息即可。 4. 自动生成查询语句 在 IDEA 使用 Spring JPA 插件可以自动生成查询语句。在 Repository 接口编写查询方法时,可以使用 Spring Data JPA 的命名规则,比如“findByXXX”,“findDistinctByXXX”,“findByXXXAndYYY”,“findByXXXOrYYY”等等,IDEA 会自动生成对应的查询语句。 5. 使用代码提示 在 IDEA 使用 Spring JPA 插件可以享受到代码提示的功能。在编写 Repository 接口时,可以通过代码提示快速编写查询方法,减少手动输入的错误。 以上是一些使用 Spring JPA 插件的技巧,希望对你有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值