Java 动态查询关联的表示法

Java 动态查询关联的表示法,java,grails,groovy,gorm,Java,Grails,Groovy,Gorm,在这本书中,我们可以读到: 查询关联。关联也可以在查询中使用: def author = Author.findByName("Stephen King") def books = author ? Book.findAllByAuthor(author) : [] 我想知道?和:[]如果Groovy中的语句(和Java,请参见第一条注释)是什么意思 相当于: def books if (author) { books = Book.findAllByAuthor(author) }

在这本书中,我们可以读到:

查询关联。关联也可以在查询中使用:

def author = Author.findByName("Stephen King")

def books = author ? Book.findAllByAuthor(author) : []

我想知道
:[]

如果
Groovy
中的
语句(和
Java
,请参见第一条注释)是什么意思

相当于:

def books
if (author) {
    books = Book.findAllByAuthor(author)
}
else {
    books = []
}

请参见
elvis运算符
Groovy
,而不是
Java
)。

如果
Groovy
(和
Java
,请参见第一条注释)中的
if
语句

相当于:

def books
if (author) {
    books = Book.findAllByAuthor(author)
}
else {
    books = []
}

请参见
elvis操作符
Groovy
,而不是
Java
)。

这是Java三元操作符,不特定于Groovy。是的,Elvis运算符是在Groovy中添加的。
[]
是Groovy对
新ArrayList()
的缩写(类似地,
[:]
表示
新LinkedHashMap()
),这是Java三元运算符,不特定于Groovy。是的,Elvis运算符是在Groovy中添加的。
[]
是Groovy对
新ArrayList()
的缩写(类似地,
[:]
表示
新LinkedHashMap()