Tôi đã đọc các bài viết khác nhau trên web, nhưng chúng dường như khá rải rác vào thời điểm này. Chính xác những gì tôi cần phải làm trong cấu hình của tôi và trong phương pháp của tôi để có được phiên ngủ đông. Tôi đang cố gắng thực hiện một số cuộc gọi sql trực tiếp cho các thủ tục được lưu trữ. Tôi có một cơ sở mã lớn mà tôi đang chuyển từ Ruby với nhiều phương thức tĩnh và các cuộc gọi thủ tục được lưu trữ. Nếu tôi cần sử dụng sessionFactory thì làm cách nào để tôi có quyền truy cập vào nó?Trong Grails làm thế nào để truy cập vào phiên ngủ đông bên trong một phương thức tĩnh lớp miền?
Trả lời
Từ một phương pháp tĩnh bạn có thể kéo đậu sessionfactory từ bối cảnh ứng dụng:
import org.codehaus.groovy.grails.commons.ApplicationHolder as AH
...
def ctx = AH.application.mainContext
def sessionFactory = ctx.sessionFactory
def session = sessionFactory.currentSession
Nếu đó là trong một dịch vụ hoặc điều khiển, bạn chỉ cần khai báo sessionfactory
def sessionfactory
để có nó tiêm. Sau đó, bạn có thể tham khảo
sessionFactory.currentSession
để sử dụng.
Kiểm tra plugin bộ lọc hibernate (tệp HibernateFilterGrailsPlugin.groovy) để biết cách tiêm một loạt các phương thức sử dụng phiên.
Tôi đặc biệt tìm cách lấy nó từ một phương thức tĩnh lớp miền. Tôi không muốn phải có được phiên từ bộ điều khiển và vượt qua nó vào các phương pháp. Đó là những năm 1990 ' – Andrew
Tôi đã thử điều này với Grails 2.1 và nhà máy phiên dường như không được đưa vào dịch vụ. Phương pháp của Burt ở trên dường như vẫn hoạt động. –
Tôi đã thử nghiệm tính năng này ngay bây giờ trên 2.2.3 và hoạt động bình thường. –
Điều này dường như không cung cấp cho bạn phiên Hibernate đầy đủ, thay vào đó là phiên Grails, thiếu một số phương thức (ví dụ 'createSQLQuery ') –
Đây không phải là một nhận xét đầy sự thật. Phiên không phải là phiên "Grails", đó là phiên Hibernate. Thật dễ dàng để xác định; thay thế 'session.clear()' bằng 'println session.getClass(). name' và bạn có khả năng thấy' org.hibernate.internal.SessionImpl' ở đầu ra –
- 1. Phiên ngủ đông trong lớp bên trong
- 2. Làm thế nào để truy cập vào lớp Java bên trong tĩnh thông qua Clojure interop?
- 3. Thêm phương thức vào một lớp miền
- 4. Làm thế nào để bạn ngắt kết nối một đối tượng khỏi phiên ngủ đông trong grails?
- 5. gọi một phương thức tĩnh bên trong một lớp học?
- 6. làm thế nào để unproxy một đối tượng ngủ đông
- 7. Làm thế nào để truy cập một phương thức siêu lớp từ một lớp lồng nhau?
- 8. truy cập phương thức lớp học bên trong java
- 9. làm thế nào để truy cập vào một biến của lớp bên ngoài từ lớp bên trong ruby
- 10. bên trong truy cập lớp phương pháp lớp bên ngoài, cùng một phương pháp tên
- 11. Làm thế nào để truy cập vào một thành viên tin bên trong một hàm tĩnh trong PHP
- 12. Biểu thức trong tiêu chí ngủ đông
- 13. Làm thế nào để bạn giả lập một phương pháp tĩnh của một đối tượng miền trong Grails?
- 14. Cách tốt nhất để truy cập vào bất động sản Lớp bên trong một phương pháp tĩnh với PHP
- 15. Tạo thể hiện lớp từ bên trong phương thức tĩnh
- 16. Làm thế nào để gọi phương thức tĩnh trong PowerShell
- 17. Tại sao các lớp bên trong làm cho các phương thức riêng có thể truy cập?
- 18. Làm thế nào một lớp lồng nhau có thể truy cập một phương thức trong lớp ngoài trong Ruby?
- 19. truy cập vào biến trong lớp bên trong trong java
- 20. Làm cách nào để truy cập một phương thức từ một bình bên ngoài khi chạy?
- 21. Cách nhận kết nối jdbc từ phiên ngủ đông?
- 22. phương thức gọi lớp php từ phương thức tĩnh bên trong cùng một lớp nhưng không được thực hiện
- 23. Không thể sử dụng grails g.link trong lớp miền
- 24. Lớp bên trong truy cập lớp bên ngoài
- 25. Làm thế nào để truy cập một phương pháp tĩnh từ một phương pháp thể hiện trong mongoose?
- 26. Trong C# .net, Làm thế nào để truy cập một điều khiển từ một phương pháp tĩnh?
- 27. Làm cách nào để có thể truy cập vào một trường riêng tư?
- 28. Java: Làm thế nào để hạn chế quyền truy cập của một phương thức vào một lớp cụ thể?
- 29. Làm thế nào để ánh xạ một String [] trong ngủ đông
- 30. Truy cập vào các phương thức và thuộc tính công khai bên trong một Delphi BPL
Cảm ơn Burt. Tôi sẽ thử. – Andrew
ApplicationHolder hiện không được chấp nhận, có phương pháp cập nhật cho điều này không? –
'nhập grails.util.Holders' sẽ nhập trình giữ tĩnh không được chấp nhận và sau đó' Holders.grailsApplication.mainContext.sessionFactory' sẽ cung cấp cho bạn một xử lý trên sessionFactory. – pendext