spring-jpa - 使用 VARBINARY 类型创建表

问题描述 投票:0回答:1

我有这个实体:

    @Entity
    @Table(name = "users",
            uniqueConstraints = {
                    @UniqueConstraint(columnNames = "username"),
                    @UniqueConstraint(columnNames = "email")
            })
    @Getter
    @Setter
    @AllArgsConstructor
    @NoArgsConstructor
    @Builder
    @ToString
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        @NotBlank
        @Size(max = 50)
        private String username;
    
        @NotBlank
        @Size(max = 50)
        @Email
        private String email;
    
        @NotBlank
        @Size(max = 120)
        private String password;
    
        BigDecimal lat;
    
        BigDecimal lon;
    
    
        @Column(columnDefinition="VARBINARY")
        byte[] natalChart;

...
    
    }

在我的财产文件中:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update

但是启动应用程序时出现此错误:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table users (id bigint not null auto_increment, ascendant varchar(255), creation_date datetime(6), day integer not null, email varchar(50), hour integer not null, language varchar(255), last_login_date datetime(6), last_password_reset_date datetime(6), lat decimal(38,2), lon decimal(38,2), minute integer not null, mobile_os varchar(255), month integer not null, natal_char_desc bit, natal_char_titles bit, natal_chart VARBINARY, password varchar(120), platform varchar(255), solar_return_desc bit, solar_return_titles bit, subscription_expiration_date datetime(6), time_zone float(53) not null, token varchar(255), username varchar(50), year integer not null, primary key (id)) engine=InnoDB" via JDBC [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', password varchar(120), platform varchar(255),  sol' at line 1]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:92)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:574)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:514)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:315)
    at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:80)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:232)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:117)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:284)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:143)
    at java.base/java.util.HashMap.forEach(HashMap.java:1429)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:140)
    at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37)
    at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:292)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:431)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1455)
mysql jdbc spring-data-jpa spring-data spring-jdbc
1个回答
0
投票

您需要向 VARBINARY 添加长度(以字节为单位) - 例如VARBINARY(255)。 那就应该没问题了,祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.