2015-10-23 160 views
2

我想創建一個簡單的春季啓動應用程序,它將連接到HSQLDB並與用戶表一起工作,但是我在嘗試啓動時遇到了這個問題。春季開機無法啓動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 

與整個控制檯輸出這裏: http://pastebin.com/7HminjFL

我的文件頃:

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); 
} 

application.properties

spring.datasource.url=jdbc:hsqldb:file:C:\DB\TestDB 
spring.datasource.username=SA 
spring.datasource.password= 
spring.datasource.driver-class-name=org.hsqldb.jdbcDriver 
+0

您正在使用Spring Boot,然後使用Spring引導,您正在努力不去嘗試。將'Application'類移動到'hello'包中,移除所有註釋,但刪除'SpringBootApplication'註釋。然後再次啓動應用程序,如果仍然失敗,請將堆棧跟蹤添加到您的問題中。 –

+0

我已經刪除了註釋(我只在嘗試解決此問題時添加了該註釋),同樣的錯誤仍然存​​在,我將整個控制檯輸出粘貼到pastebin,因爲它很大。 – Noozen

回答

3

你的堆棧跟蹤提供了一些方向的問題。

產生的原因:org.hibernate.AnnotationException:沒有爲實體指定的標識符:hello.Account

Account級交換機您@Id註釋進口。

可能您正在使用:進口org.springframework.data.annotation.Id。交換import javax.persistence.Id並嘗試再次啓動您的應用程序;


順便說一句,@SpringBootApplication是您開始SpringBoot應用程序的簡便方法。如果您使用它,則不需要添加@Configuration,@EnableAutoConfiguration和@ComponentScan

@SpringBootApplication

表示一個{@link配置配置}類聲明的一個或多個 {@link豆@Bean}方法,也觸發{@link EnableAutoConfiguration 自動配置}和{@鏈接ComponentScan組件掃描}。

這是一個便利的 註釋,相當於聲明瞭{@code @Configuration}, {@code @EnableAutoConfiguration}和{@code @ComponentScan}。

+0

你是我的英雄。 – Noozen