2013-06-09 36 views
11

Tôi đã làm theo hướng dẫn cho dropwizard và hibernate mà không có vấn đề gì. Bây giờ tôi có chú thích không tầm thường trong các thực thể của tôi, và tôi muốn ngủ đông để tạo ra các bảng cho tôi, và các công cụ như thế. Vì vậy, làm thế nào tôi có thể thay đổi cấu hình của hibernate? Tôi có thể cung cấp cho nó một hibernate.cfg.xml không? Nếu có thể, tôi có phải thiết lập lại kết nối không?Tạo lược đồ trong dropwizard-hibernate

Tôi thấy điều này PR, nhưng nó dường như không có trong bản phát hành công cộng nào (không hibernateBundle.configure trong lọ của tôi)

Nhưng có lẽ tôi đang tìm kiếm những điều sai trái. Cho đến nay, tôi chỉ đang cố gắng đặt hibernate.hbm2dll.auto. Sau khi tất cả, có thể có một cách khác để cho phép tạo bảng ngủ đông trong Dropwizard ... Vì vậy, bất kỳ trợ giúp nào?

Cảm ơn bạn.


Chỉnh sửa: Tôi đã tiếp cận vấn đề từ góc khác, để tạo rõ ràng lược đồ thay vì sử dụng hbm2ddl.auto. Xem câu trả lời được đề xuất.

+0

Tôi gặp vấn đề tương tự. Tôi nghĩ rằng bạn có thể cung cấp chỉ persistence.xml cung cấp trong classpath và nó sẽ làm việc –

Trả lời

22

Chỉnh sửa: Đã giải quyết sự cố! Việc làm này trong cấu hình YAML hiện hoạt động: (Dropwizard 0.7.1)

database: 
    properties: 
     hibernate.dialect: org.hibernate.dialect.MySQLDialect 
     hibernate.hbm2ddl.auto: create 

(từ this answer)


Cũ câu trả lời:

Đây là những gì tôi hiện đang sử dụng : Một lớp gọi hàm SchemaExport của hibernate để xuất lược đồ sang tệp SQL hoặc sửa đổi cơ sở dữ liệu. Tôi chỉ chạy nó sau khi thay đổi thực thể của tôi, và trước khi chạy ứng dụng.

public class HibernateSchemaGenerator { 

    public static void main(String[] args) { 
     Configuration config = new Configuration(); 

     Properties properties = new Properties(); 

     properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); 
     properties.put("hibernate.connection.url", "jdbc:mysql://localhost:3306/db"); 
     properties.put("hibernate.connection.username", "user"); 
     properties.put("hibernate.connection.password", "password"); 
     properties.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver"); 
     properties.put("hibernate.show_sql", "true"); 
     config.setProperties(properties); 

     config.addAnnotatedClass(MyClass.class); 

     SchemaExport schemaExport = new SchemaExport(config); 

     schemaExport.setOutputFile("schema.sql"); 
     schemaExport.create(true, true); 

    } 

} 

Tôi không biết về các công cụ ngủ đông trước đây. Vì vậy, ví dụ mã này có thể được sử dụng trong khởi tạo dịch vụ để hoạt động như hbm2ddl.auto = create.

Tôi hiện đang sử dụng nó chỉ bằng cách chạy lớp (từ nhật thực hoặc maven) để tạo và xem lại SQL đầu ra.

+0

Không thể tìm thấy trong các tài liệu. Lệnh tạo lược đồ là gì? – ravi404

Các vấn đề liên quan