Tôi đang cố gắng xây dựng ứng dụng cơ sở dữ liệu bằng cách sử dụng GWT 1.5.3. Tôi sử dụng chú thích JPA với các đối tượng của mình. Có vẻ như trong chế độ lưu trữ của GWT RPC hoạt động tốt. Nhưng khi tôi cố gắng biên dịch ứng dụng của mình bằng trình biên dịch GWT, tôi nhận được các lỗi như: "Nhập khẩu javax.persistence không thể được giải quyết", "Thực thể không thể được giải quyết thành một loại". toplink-essentials.jar đã được đưa vào đường dẫn dự án của tôi. Tôi cần những cài đặt nào khác để giải quyết vấn đề này?GWT với JPA
Trả lời
Ok, tôi đã tìm thấy những gì tôi đã mất tích. Tôi cần bao gồm jpa-annotations-source.jar trong đường dẫn trình biên dịch GWT của tôi trong kịch bản lệnh myapp-compile.cmd (hoặc trong tệp xây dựng kiến). Bằng cách này, bất cứ ai có thể cho tôi biết nguồn gốc của tập tin jpa-annotations-source.jar này?
Bạn cần bao gồm mã nguồn cho chú thích JPA trong đường dẫn xây dựng cho dự án GWT của bạn. Xem ở đây để biết thêm chi tiết:
http://code.google.com/p/google-web-toolkit/issues/detail?id=1830&can=1&q=jpa
Cụ file jar này sẽ khắc phục vấn đề của bạn:
Liên kết đã thay đổi địa chỉ http: // google-web- toolkit.googlecode.com/issues/attachment?aid=1475633892125294312&name=jpa-annotations-source.jar&token=672fe08de2c4a90493f62b6daaf3ae1e. Không nên phụ thuộc vào liên kết như chúng được tái tạo định kỳ động. Nên google cho "jpa-annotations-source.jar google-web-toolkit.googlecode.com/issues/attachment". –
Bạn có thể sử dụng thư viện Gilead (http://sourceforge.net/projects/gilead/) để quản lý liên tục các thực thể JPA với GWT.
Trân
Tôi cũng đang làm việc với JPA < -> GWT chuyển đổi dữ liệu, vv
Trong một nỗ lực để loại bỏ các lớp DTO tôi đã sử dụng Gilead quá.
Phản đối của tôi ở đây là về việc dịch javax.persistence. Để tránh điều này, tôi sử dụng các khai báo ánh xạ JPA XML (orm.xml)
Vấn đề chung của JPA và GWT là chính GWT không hỗ trợ các lớp JPA ưa thích, vì vậy bạn chỉ cần thực hiện các thực thể liên tục POJO đơn giản DTO java.io.Serializable và có các chú thích tài nguyên JPA đơn giản. Bạn cần phải tạo các lớp thực thể trong phạm vi của khách hàng GWT hoặc có hành nó theo các gói yourproject.client hoặc thêm chúng với
đường dẫn nguồn = "khách hàng"
nguồn path = "folderOfYourEntities"
trong tệp YouProject.gwt.xml của dự án GWT. Điều này sẽ bao gồm các đối tượng thực thể trong trình khách GWT để chúng có thể sử dụng chúng trên phía máy khách của RPC. DAO phải ở phía máy chủ và có thể chứa bất kỳ thứ gì mà bạn hỗ trợ.
Vấn đề bạn có bây giờ là khi biên dịch, trình biên dịch GWT nói rằng nó không biết những gì nhập khẩu cho các phụ đề JPA là trong các lớp thực thể DTO. Đó là lý do tại sao bạn cần lớp javax.persistence và mã nguồn. Tham chiếu jpa-annotation-source.jar của Rustmyself hoạt động. Nó chỉ là các tệp lớp được biên dịch javax.persistence và các tệp mã nguồn cộng với một Persistence.gwt.xml. Nó là một mô-đun GWT đơn giản cho gói javax.persistence. Nếu bạn biết cách tạo mô-đun GWT của riêng mình, bạn nên có vấn đề khi thực hiện tất cả công việc này. Nhân tiện, nguồn chính thức cho Java EE có thể được tìm thấy trên phần xây dựng trang web của glassfish wiki.glassfish.java.net
Có nhiều giải pháp khác bao bọc các thực thể PU ưa thích của bạn cho các đối tượng đơn giản tự động sử dụng proxy hoặc để tải chúng vào thời gian chạy. Chúng hoạt động, nhưng không phải là giải pháp tối ưu. Cách thực hành tốt nhất là làm cho mọi việc trở nên đơn giản và mạnh mẽ ngay từ đầu bằng cách có các thực thể POJO JPA DTO trên ngữ cảnh máy khách GWT và DAO toàn diện trên máy chủ.
GWTPersistence Ví dụ
Tôi đã thêm một ví dụ làm việc thực tế về cách làm cho GWT và JPA làm việc liên tục. Đây là một dự án NetBean với mã nguồn và tệp triển khai. Xem GWTPersistence on NingZhang.info
Đơn giản, hãy giữ phiên bản khác của Thực thể của bạn nhưng không có chú thích!
Rebounding trên bình luận synergetic, bạn bây giờ (từ GWT 1.5) chỉ cần thêm
<source path='javax.persistence'/>
để Module.gwt.xml bạn
- 1. Web-Worker với GWT
- 2. Tạo UUID với GWT
- 3. JPA @ManyToOne với CascadeType.ALL
- 4. JDBCRealm với JPA
- 5. GWT tương đương với Lưới trực tiếp của Smart-GWT
- 6. Sử dụng ổi với GWT
- 7. Tệp GWT Html với CSS
- 8. JBoss 5.1: Hibernate với JPA
- 9. Lỗi: com.google.appengine.api.datastore nhập khẩu không thể được giải quyết JPA GAE GWT
- 10. Ext GWT vs GWT-EXT
- 11. Mã GWT HOẶC GWT Designer?
- 12. GWT: Sự khác biệt giữa gwt-user.jar và gwt-dev.jar?
- 13. gwt-openlayers với ví dụ openstreetmap
- 14. Tải xuống tệp động với GWT
- 15. FlowPanel so với HTMLPanel trong GWT UiBinder
- 16. Làm việc với lớp EnumSet trong GWT
- 17. cách thêm thẻ h1 với gwt
- 18. Ngày GWT tương đương với java.util.Calendar
- 19. Cài đặt plugin GWT với Eclipse
- 20. Sự khác biệt giữa gwt, gwt-rpc, ext-gwt, gwt thông minh
- 21. Tiêu chí JPA 2 với 3 bảng
- 22. JPA nhiều đến nhiều với cột phụ
- 23. Tạo cơ sở dữ liệu với JPA?
- 24. Thực thể chuyển đổi DTO với JPA
- 25. Xử lý ngoại lệ với JPA + Hibernate
- 26. Bộ đệm giao thức với JPA
- 27. Tiêm phụ thuộc với Spring/Junit/JPA
- 28. GWT: các phương pháp hay nhất để xây dựng giao diện web2.0 với GWT là gì?
- 29. Gọi một dịch vụ GWT trong một ngữ cảnh khác với Cơ sở Mô-đun GWT?
- 30. Cách thích hợp để sử dụng phương thức gwt-bootstrap với gwt-platform là gì?
Ngoài ra, tôi nên nói rằng trong GWT 1.5 không cần bao gồm các bình trên. Thay vào đó, chỉ cần sử dụng jar sản xuất như toplink-necess.jar; tất nhiên chuyển nó cho trình biên dịch GWT của bạn để biên dịch thành công; và KHÔNG viết trong app.gwt.xml của bạn –
synergetic