域类:
package com.myapp.gorm.log
import com.myapp.gorm.security.User
import com.myapp.gorm.system.TransactionJournal
class LogJournal {
static constraints = {
message nullable: false
category nullable: false
user1 nullable: false
}
static mapping = {
dateCreated column: "ts"
lastUpdated column: "ts_update"
}
LogMessage message
LogCategory category
User user1
User user2
String value
TransactionJournal transaction
Date dateCreated
Date lastUpdated
boolean equals(o) {
if (this.is(o)) return true
if (getClass() != o.class) return false
LogJournal that = (LogJournal) o
if (category != that.category) return false
if (dateCreated != that.dateCreated) return false
if (id != that.id) return false
if (lastUpdated != that.lastUpdated) return false
if (message != that.message) return false
if (transaction != that.transaction) return false
if (user1 != that.user1) return false
if (user2 != that.user2) return false
if (value != that.value) return false
return true
}
int hashCode() {
int result
result = message.hashCode()
result = 31 * result + category.hashCode()
result = 31 * result + user1.hashCode()
result = 31 * result + (user2 != null ? user2.hashCode() : 0)
result = 31 * result + (value != null ? value.hashCode() : 0)
result = 31 * result + (transaction != null ? transaction.hashCode() : 0)
result = 31 * result + dateCreated.hashCode()
result = 31 * result + (lastUpdated != null ? lastUpdated.hashCode() : 0)
result = 31 * result + id.hashCode()
return result
}
}
错误:
groovy.lang.MissingMethodException: No signature of method: c com.domainboost.gorm.log.LogJournal.save() is applicable for argument types: () values: []
Possible solutions: save(), save(boolean), save(java.util.Map), wait(), last(), any()
或者其他域类正常工作,只有这个有问题。我看到grails无法在此类实例上执行任何方法。
没有任何验证错误。
我在这里调用这个域类(它的logback:appender):
class SystemAppender extends AppenderBase<ILoggingEvent> {
static appInitialized = false
@Override
public void append(ILoggingEvent event) {
if (appInitialized) {
LogMessage logMessage = LogMessage.findByMessage(event.getMessage())
if (!logMessage) {
logMessage = new LogMessage()
logMessage.message = event.getMessage()
logMessage.save(flash: true)
}
String categoryStr = event.argumentArray[0]
LogCategory logCategory = LogCategory.findByCategory(categoryStr)
if (!logCategory) {
logCategory = new LogCategory()
logCategory.category = categoryStr
logCategory.save(flash: true)
}
User user1 = null
if (event.argumentArray.contains(1)) {
user1 = event.argumentArray[1]
}
User user2 = null
if (event.argumentArray.contains(2)) {
user1 = event.argumentArray[2]
}
TransactionJournal tj = null
if (event.argumentArray.contains(3)) {
tj = event.argumentArray[3]
}
LogJournal logJournal = new LogJournal()
logJournal.category = logCategory
logJournal.message = logMessage
logJournal.user1 = user1
logJournal.user2 = user2
logJournal.transaction = tj
LogJournal.save()
}
}
}
我如何在grails控制台中测试它
import org.slf4j.Logger
import org.slf4j.LoggerFactory
def Logger logger = LoggerFactory.getLogger("sysLog")
logger.info("message", "category")
错误已开启 LogJournal.save()
以错误结束的代码在GormStaticApi.groovy
中@CompileStatic(TypeCheckingMode.SKIP)
def methodMissing(String methodName, Object args) {
FinderMethod method = gormDynamicFinders.find { FinderMethod f -> f.isMethodMatch(methodName) }
if (!method) {
throw new MissingMethodException(methodName, persistentClass, args)
}
所以看来这种方法&#34;保存&#34;找不到.. WTF?
答案 0 :(得分:3)
此
LogJournal.save()
正在寻找类上的静态方法。您希望小写首字母在实例变量上调用save:
logJournal.save()