2009-08-06 29 views
26

Tôi chỉ mới bắt đầu với Groovy/Grails.Làm cách nào để khắc phục lỗi Grails: "Không tìm thấy tên miền cho tên PrivacyOptions. Vui lòng thử lại và nhập tên miền hợp lệ"

Tôi đã thêm bộ điều khiển miền mới vào dự án của mình và bộ điều khiển tạo không thích nó.

Có một số dấu hiệu khác sai: Nếu tôi chạy ứng dụng, không có bảng nào được tạo ra trong cơ sở dữ liệu.

Tôi đã giảm DomainController xuống một trường Chuỗi và không có ràng buộc nào, chỉ để đảm bảo không có điều gì đó sai với đặc tả của tôi. Tôi cũng đã thử đổi tên nó, chỉ trong trường hợp có cái gì đó về tên gốc (Bảo mật) mâu thuẫn với cái gì đó.

Tôi chắc chắn rằng tôi có tên chính xác và tệp đó được gọi là PrivacyOptions.groovy và bên trong lớp còn được gọi là PrivacyOptions.

Dưới đây là các lỗi:

Running script /opt/local/grails/scripts/GenerateController.groovy 
Environment set to development 
Domain class not found in grails-app/domain, trying hibernate mapped classes... 
No domain class found for name PrivacyOptions. Please try again and enter a valid domain class name 
+9

Tôi gặp sự cố tương tự. Tôi cần phải bao gồm tên gói khi gọi 'grails generate-all packagename.domain' –

Trả lời

59

Thêm tên dự án (hay còn gọi là tên gói từ dòng đầu tiên của file mô hình) trước tên model.

grails generate-all projectname.Class 

Đây là cách cuối cùng làm việc cho tôi, sau một giờ gãi đầu và googling.

ref: http://grails.1312388.n4.nabble.com/Generate-Scaffold-Scripts-Don-t-Work-Getting-No-domain-class-found-Error-td2017858.html#a2017880

As of 1.2.2 Grails creates artifacts in packages that default to your project name - see http://jira.codehaus.org/browse/GRAILS-5713 So you'd need to run grails generate-all srapp.Srmodel - Burt

+3

điều này phải được đánh dấu là câu trả lời chính xác. – Asaf

+0

đồng ý với Asaf. Đây là câu trả lời đúng trong trường hợp của tôi. =) – bungrudi

+0

điều này làm việc cho tôi –

0

Tôi không biết làm thế nào bạn có đến thời điểm này, nhưng có lẽ this sẽ giúp bạn vượt qua cái bướu.

Tôi có đúng là giả sử rằng bạn đã sử dụng "grails create-domain-class" để tạo đối tượng miền PrivacyOptions và tập lệnh Groovy hiển thị trong thư mục grails-app/domain của bạn? Bạn đã nhận được một PrivacyOptionsTests trong thử nghiệm/đơn vị? Điều đó có vượt qua không? Bạn đã thêm một gói chưa?

+0

Tôi đã làm nó từ IDE NetBeans. Tôi tink vấn đề là khi tôi tạo ra các tập tin tôi đã chọn tùy chọn "tạo một lớp groovy" thay vì tùy chọn "tạo một lớp miền". Tôi đoán ở đâu đó trong một số tệp cấu hình bí mật là danh sách các lớp là Miền và lớp tạo miền sẽ thực hiện việc dọn dẹp cần thiết. –

+1

Có, tạo-miền-class là chìa khóa. – duffymo

+0

Tệp Groovy chỉ đơn giản là nằm trong thư mục grails-app/domain. Không có tệp cấu hình bí mật nào –

10

nó không projectname.Class, nó phải là dirname.classname.

ví dụ: tên dự án của bạn là Helloworld, thư mục là "grails-app/domain/helloworld/User.groovy". do đó, lệnh là "grails generate-all helloworld.User", nhưng không phải "Helloworld.User"

+0

+1, Độ nhạy trường hợp không quan trọng trong trường hợp của tôi, cảm ơn. –

3

Trợ giúp tuyệt vời. Tôi phải đối mặt với cùng một vấn đề sau this tutorial đặt tên cho dự án là "trip-planner" và Grails tạo các thư mục tên miền là '~/trip/planner /' thay vì '~/trip-planner /'. Sau đó, lệnh tạo-tất cả cho lớp Chuyến đi phải là 'grails generate-all trip.planner.Trip'

Chỉ trong trường hợp ai đó thêm ký tự '-' vào tên dự án.

1

Vâng ... đã làm việc cho tôi. Tôi chỉ cần đặt trước tên gói cho lớp mà tôi đã cố gắng tạo và tất cả cho nó. Vì vậy, ...

generate-tất cả racetrack.User

Bit của một lỗi quần thực sự vì tất cả grails khác lệnh không yêu cầu tên gói được đưa :-))

0

generate- tất cả các tên miền sẽ không hoạt động như tên gói đầy đủ là cần thiết. Tôi sẽ thêm một dấu * cho lần đầu tiên và sau đó bạn sẽ thấy lớp miền sẽ trông như thế nào đối với các cuộc gọi khác.

generate-all * 

http://grails.org/doc/latest/ref/Command%20Line/generate-all.html

0

Nó phải được dirname.classname.

Nếu bạn có một lớp miền tạo Book, như thế này 'grails-app/domain/cuốn sách/Book.groovy'

Các nó nên là: grails generate-app book.Book

0

Nếu bạn đang làm việc trên Groovy/Grails Tool Suite, bạn có thể đơn giản nhìn thấy tên miền bằng cách kích chuột phải vào bộ điều khiển mà bạn đã tạo, chú ý trường hợp chính xác cho tên miền, sau đó kích chuột phải vào khung nhìn và tạo khung nhìn và nhập vào domainname.viewname

Ví dụ, tên bộ điều khiển của bạn là RegistrationController và tên miền là helloworld, bạn có thể nhấp chuột phải vào các khung nhìn và trong gen hộp thoại tỷ lệ lượt xem, nhập giá trị như helloworld.Registration

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