Tôi là một newbie grails (và một newbie groovy), và tôi đang làm việc thông qua một số hướng dẫn grails. Là một người dùng mới, vỏ grails là một công cụ nhỏ thực sự hữu ích đối với tôi, nhưng tôi không thể tìm ra cách làm cho nó thấy các lớp và các đối tượng của tôi. Đây là những gì tôi đang cố gắng:Grails shell không nhìn thấy các đối tượng miền
% grails create-app test
% cd test
% grails create-domain-class com.test.TestObj
% grails shell
groovy:000> new TestObj()
ERROR org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, groovysh_evaluate: 2: unable to resolve class TestObj
Tôi đã ấn tượng rằng vỏ grails có thể thấy tất cả các bộ điều khiển, dịch vụ và đối tượng miền. Chuyện gì thế này? Tôi có cần làm gì khác ở đây không?
tôi đã cố gắng một điều khác:
groovy:000> foo = new com.test.TestObj();
===> com.test.TestObj : null
groovy:000> foo.save
ERROR groovy.lang.MissingPropertyException: No such property: save for class: com.test.TestObj
Tôi đang làm gì sai?
EDIT: OK, tôi đã thấy câu trả lời về cách sử dụng tên đầy đủ và cũng có thể sử dụng .save()
thay vì .save
. Nhưng còn cái này thì sao?
groovy:000> new com.test.TestObj().save()
ERROR org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
Tôi làm gì sai lần này?
Có, withTransaction hoạt động hoàn hảo. Tôi tự hỏi tại sao tôi cần phải thêm điều đó. Ví dụ trực tuyến dường như không đề cập đến nó. –
Bạn không cần phải thêm điều đó, nhưng tôi nghĩ rằng nó có thể giải quyết vấn đề của bạn. Bằng cách chạy mã của bạn trong một giao dịch, bạn buộc phải tạo ra một phiên ngủ đông (nếu thiếu). –