【发布时间】:2011-06-20 19:33:07
【问题描述】:
我正在尝试将 Grails 应用程序从 1.0.3 升级到 1.3.7 并遇到异常:
object references an unsaved transient instance - save the transient instance before flushing:
我没有在触发的代码中进行任何保存。在下面的代码中
public static Season getCurrentSeason() {
String yearString = ConfigurationHolder.config.year
assert yearString != null: "need to configure season"
int year = Integer.parseInt(yearString)
Affiliation nfl = Affiliation.nfl;
return Season.findBySeasonKeyAndLeague(year, nfl)
}
对 Affiliation.nfl 的调用是:
public static Affiliation getNfl() {
if (cacheNFL == null) {
String key = ConfigurationHolder.config.nfl
cacheNFL = Affiliation.findByKey(key)
}
return cacheNFL;
}
如果我删除了 cacheNFL 并让它每次都进行真正的提取,那么代码就可以工作。我的问题是:
- 为什么以前可以这样做?它似乎 就像使用缓存进行提取一样 不属于当前的对象 休眠查询(我可能是 不正确,假设是问题) 永远不会得到支持。
- 有吗 无论如何,除了这个问题 获取数据库?
- 如何 我可以告诉我是否击中 数据库或进入休眠状态 缓存(我不太了解 休眠)。有没有输出可以 给我看看?
【问题讨论】: