Java 由于SQL中的语法错误,SpringBoot2测试存储库失败

Java 由于SQL中的语法错误,SpringBoot2测试存储库失败,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,我正在使用SpringBoot最新的2.1.3版本,并希望从测试用例开始,但这对我来说不起作用 我有一个简单的实体 @AllArgsConstructor @NoArgsConstructor @Data @Entity @Table(name = "foo.Account" ) public class UserEntity { @Id @GeneratedValue(strategy = GenerationT

我正在使用SpringBoot最新的2.1.3版本,并希望从测试用例开始,但这对我来说不起作用

我有一个简单的实体

    @AllArgsConstructor
    @NoArgsConstructor
    @Data
    @Entity
    @Table(name = "foo.Account" )
    public class UserEntity {

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "uid")
        private Long id;
        @Column(name= "login")
        private String username;
        @Column(name = "password_hash")
        private String password;
    }
使用此存储库

  @Repository("UserRepository")
    public interface UserRepository extends JpaRepository<UserEntity, Long> {

    }
但如果由于语法错误而失败,我不理解为什么会发生这种情况。由于注释GenerationType.Auto,将创建hibernate_序列表

    2019-03-22 14:36:38.421 ERROR 9552 --- [           main] o.hibernate.id.enhanced.TableStructure   : could not read a hi value

    org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "SELECT NEXT_VAL AS ID_VAL FROM foo.HIBERNATE_SEQUENCE WITH[*] (UPDLOCK, ROWLOCK) "
    Syntax error in SQL statement "SELECT NEXT_VAL AS ID_VAL FROM foo.HIBERNATE_SEQUENCE WITH[*] (UPDLOCK, ROWLOCK) "; SQL statement:
select next_val as id_val from epls_dbo.hibernate_sequence with (updlock, rowlock) [42000-197]

我知道您可以讨论为什么要测试这个存储库,最好是进行集成测试,但我希望能够为存储库制作一个测试用例,希望有人能提供帮助。

您能尝试在实体中使用
GenerationType.IDENTITY
而不是
GenerationType.AUTO
,方法是将错误更改为org.springframework.dao.InvalidDataAccessResourceUsageException:无法准备语句;SQL[插入foo.foo.Account(密码散列,登录)值(?,)];嵌套异常为org.hibernate.exception.sqlgrammareexception:无法准备语句我可以批准没有表foo.foo.Account它应该命名为foo.Account。我如何重新配置这个。在生产数据库中,它被称为foo.Account,因此我想在测试用例中继续使用它将
@表(name=“foo.Account”)
更改为
@表(name=“Account”)
CREATE SCHEMA IF NOT EXISTS FOO
    2019-03-22 14:36:38.421 ERROR 9552 --- [           main] o.hibernate.id.enhanced.TableStructure   : could not read a hi value

    org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "SELECT NEXT_VAL AS ID_VAL FROM foo.HIBERNATE_SEQUENCE WITH[*] (UPDLOCK, ROWLOCK) "
    Syntax error in SQL statement "SELECT NEXT_VAL AS ID_VAL FROM foo.HIBERNATE_SEQUENCE WITH[*] (UPDLOCK, ROWLOCK) "; SQL statement:
select next_val as id_val from epls_dbo.hibernate_sequence with (updlock, rowlock) [42000-197]