Java Spring引导无法使用HSQLDB启动
我正在尝试创建一个简单的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/
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
注释导入
您可能正在使用:importorg.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