2015-05-16 1 views
3

Я новичок в Dropwizard, и до сих пор все шло хорошо, пока я не начал возиться с Hibernate и MySQL. Моя проблема: Hibernate не создаст таблицы и, следовательно, не будет столбцов в моей БД.Конфигурация спящего режима Dropwizard

Единственное предупреждение я получаю при запуске моего файла баночке:

org.hibernate.cfg.environment hibernate.properties not found

Но мне это нужно вообще? Поскольку у меня уже есть все настройки и сопоставление.

Вот мой класс приложения:

public class LibraryApplication extends Application<LibraryConfiguration> { 

    public static void main(String[] args) throws Exception { 
     new LibraryApplication().run(args); 
    } 


    @Override 
    public String getName() { 
     return "hello backend"; 
    } 


    private final HibernateBundle<LibraryConfiguration> hibernate = new HibernateBundle<LibraryConfiguration>(Book.class){ //more entities can be added separated with a coma 
     public DataSourceFactory getDataSourceFactory(LibraryConfiguration configuration) { 
      return configuration.getDataSourceFactory(); 
     } 
    }; 


    @Override 
    public void initialize(Bootstrap<LibraryConfiguration> bootstrap) { 

     bootstrap.addBundle(new AssetsBundle("/webapp", "/", "index.html", "static")); 
     bootstrap.addBundle(hibernate); 
    } 

    @Override 
    public void run(LibraryConfiguration configuration, 
      Environment environment) { 

     final BookDAO dao = new BookDAO(hibernate.getSessionFactory()); 

     final TestResource resource = new TestResource(
       configuration.getTemplate(), configuration.getDefaultName()); 


     final TemplateHealthCheck healthCheck = new TemplateHealthCheck(
       configuration.getTemplate()); 


     environment.healthChecks().register("template", healthCheck); //register the health check 
     environment.jersey().register(resource); //register the resource class 
     environment.jersey().register(new BookResource(dao)); 
    } 

} 

YAML файл:

server: 
    type: simple 
    rootPath: '/api/*' 
    applicationContextPath:/
    connector: 
    type: http 
    port: 8080 

template: Hello, %s! 
defaultName: back-end 


database: 
    # the name of your JDBC driver 
    driverClass: com.mysql.jdbc.Driver 

# the JDBC URL 
    url: jdbc:mysql://localhost:3306/books 

    # the username 
    user: root 

    # the password 
    password: root 

    # any properties specific to your JDBC driver: 
    properties: 
    charSet: UTF-8 
    hibernate.dialect: org.hibernate.dialect.MySQLDialect #org.hibernate.dialect.MySQL5InnoDBDialect 
    hibernate.hbm2ddl.auto: create 

конфигурацинный класс:

public class LibraryConfiguration extends Configuration{ 

    @Valid 
    @NotNull 
    @JsonProperty 
    private DataSourceFactory database = new DataSourceFactory(); 

    @JsonProperty("database") 
    public DataSourceFactory getDataSourceFactory() { 
     return database; 
    } 

    @NotEmpty 
    private String template; 

    @NotEmpty 
    private String defaultName = ""; 

    @JsonProperty 
    public String getTemplate() { 
     return template; 
    } 

    @JsonProperty 
    public void setTemplate(String template) { 
     this.template = template; 
    } 

    @JsonProperty 
    public String getDefaultName() { 
     return defaultName; 
    } 

    @JsonProperty 
    public void setDefaultName(String name) { 
     this.defaultName = name; 
    } 
} 

и моя сущность:

@Entity 
@Table(name = "book") 
@NamedQueries({ 
@NamedQuery(
name = "library.core.Book.findAll", 
query = "SELECT b FROM book b" 
    ) 
}) 
public class Book{ 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column 
    private Long id; 

    @Column(name = "title") 
    @NotNull 
    private String title; 

    @Column(name = "author") 
    @NotNull 
    private String author; 

    @Column(name = "date") 
    private long date; 

    @Column(name = "description") 
    private String description; 

    @Column(name = "image") 
    private String image; 

    public Book(String title, String author){ 
     this.title = title; 
     this.author = author; 
    } 

    @JsonProperty 
    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    @JsonProperty 
    public Long getId() { 
     return id; 
    } 



    @JsonProperty 
    public String getAuthor() { 
     return author; 
    } 

    public void setAuthor(String author) { 
     this.author = author; 
    } 

    @JsonProperty 
    public long getDate() { 
     return date; 
    } 

    public void setDate(long date) { 
     this.date = date; 
    } 

    @JsonProperty 
    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    @JsonProperty 
    public String getImage() { 
     return image; 
    } 

    public void setImage(String image) { 
     this.image = image; 
    } 

    public void setId(Long id) { 

     this.id = id; 
    } 
} 

Я уже был во многих учебниках, но ни один из них не объясняет, как настроить спящий режим. Заранее спасибо.

ответ

1

Я, наконец, решил эту проблему, которая на самом деле не была большой сделкой. Просто небольшая ошибка, как и ожидалось.

Моя проблема была в классе книг, IDE автоматически импортировала библиотеку java под названием Book в классе LibraryApplication, поэтому БД не отображала ее.

С другой стороны, в классе книги именованный запрос должен выглядеть следующим образом:

@NamedQuery(
name = "library.core.Book.findAll", 
query = "SELECT b FROM Book b" 
    ) 

Моя ошибка: я пишу книгу с маленькой буквы.

 Смежные вопросы

  • Нет связанных вопросов^_^