Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导无法使用HSQLDB启动_Java_Spring_Spring Boot_Hsqldb - Fatal编程技术网

Java Spring引导无法使用HSQLDB启动

Java Spring引导无法使用HSQLDB启动,java,spring,spring-boot,hsqldb,Java,Spring,Spring Boot,Hsqldb,我正在尝试创建一个简单的spring启动应用程序,它将连接到HSQLDB并使用用户表,但是我在尝试启动它时得到了这个结果 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/

我正在尝试创建一个简单的spring启动应用程序,它将连接到HSQLDB并使用用户表,但是我在尝试启动它时得到了这个结果

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
对于此处的整个控制台输出:

我的档案是:

Application.java

@Configuration
@SpringBootApplication
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "hello")
@ComponentScan(basePackages = "hello")
@PropertySource({"classpath:application.properties"})

public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Account.java

@Entity
@Table(name = "User", schema = "PUBLIC")
public class Account implements Serializable {

    @Id
    private Long id;

    @Column(name = "Login", nullable = false)
    private String login;

    @Column(name = "Password", nullable = false)
    private String password;


    protected Account() {
        // no-args constructor required by JPA spec
        // this one is protected since it shouldn't be used directly
    }

    public Account(String login, String password) {
        this.login = login;
        this.password = password;
    }

    public String getLogin() {
        return login;
    }

    public String getPassword() {
        return password;
    }

    public void setLogin(String login) {
        this.login = login;
        return;
    }

    public void setPassword(String password) {
        this.password = password;
        return;
    }
}
AccountRepository.java

public interface AccountRepository extends JpaRepository<Account, Long> {

    Long countByLogin(String login);
}

堆栈跟踪为问题提供了一些方向

原因:org.hibernate.AnnotationException:未为实体指定标识符:hello.Account

帐户
类上切换
@Id
注释导入

您可能正在使用:import
org.springframework.data.annotation.Id
。交换
导入javax.persistence.Id
并尝试再次启动应用程序


顺便说一下,
@SpringBootApplication
是启动SpringBoot应用程序的一种方便方法。如果使用它,则不需要添加
@Configuration
、@EnableAutoConfiguration和
@ComponentScan

@SpringBoot应用程序

指示声明一个或多个链接的{@link Configuration}类 {@linkbean@Bean}方法,还触发{@link EnableAutoConfiguration 自动配置}和{@link ComponentScan component scanning}

这是一种方便 相当于声明{@code@Configuration}的注释, {@code@EnableAutoConfiguration}和{@code@ComponentScan}


您正在使用SpringBoot,然后使用SpringBoot,您正在非常努力地避免使用它。将
应用程序
类移动到
hello
包中,删除除
SpringBootApplication
注释以外的所有注释。然后再次启动应用程序,如果仍然失败,请将堆栈跟踪添加到您的问题中。我已经删除了注释(我只是在尝试解决此问题时添加了注释),并且相同的错误仍然存在,我已经将整个控制台输出粘贴到pastebin,因为它非常大。
spring.datasource.url=jdbc:hsqldb:file:C:\DB\TestDB
spring.datasource.username=SA
spring.datasource.password=
spring.datasource.driver-class-name=org.hsqldb.jdbcDriver