Tôi có một lớp học như thế này:Lấy ID của tất cả các đối tượng trong danh sách
class Foo {
String bar
}
tôi đang cố gắng để có được ID của tất cả các đối tượng có Foo
bar
String là trong danh sách bars
. Tôi đã thử nó theo nhiều cách, luôn luôn nhận được lỗi tương tự:
java.lang.String cannot be cast to java.util.Collection
Một số trong những điều tôi đã cố gắng:
def ids = Foo.findAllByBarInList(bars)*.id
def ids = Foo.findAllByBarInList(bars).collect{ it.id }
def ids = Foo.findAllByBarInList(bars).collect{ it -> it?.id }
UPDATE:
Tôi đã làm bars
với split nên nó là một mảng, không phải là một danh sách. Nó đã ném tôi đi vì Foo.findAllByBarInList(bars)
trả về các đối tượng Foo
của tôi chỉ tốt, chỉ khi tôi cố gắng thu thập các id đã thất bại. Bây giờ, tôi thực hiện bars
với số tokenize và tất cả đều tốt.
Tôi đã thêm thẻ groovy trở lại câu hỏi này bởi vì cả phương thức 'collect' và toán tử spread' * .' đều được định dạng bằng groovy. – ubiquibacon
Bạn có chắc chắn danh sách bạn đang kiểm tra chống lại được thiết lập chính xác dưới dạng danh sách không? Sử dụng 'def ids = Foo.findAllByBarInList (bars) *. Id' làm việc cho tôi. – Kelly
Tôi để thẻ Groovy tắt vì Grails sử dụng Groovy, vì vậy nó không cần thiết, và nó chỉ là việc sử dụng Groovy trong Grails, không phải là một câu hỏi cụ thể của Groovy. Một chuyên gia Groovy không có kinh nghiệm với Grails sẽ không thể giúp bạn. Tương tự, bạn có thể bỏ qua các thẻ Java, GORM, Hibernate, Spring, Programming;) –