Java 由于SQL中的语法错误,SpringBoot2测试存储库失败
我正在使用SpringBoot最新的2.1.3版本,并希望从测试用例开始,但这对我来说不起作用 我有一个简单的实体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
@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]