我有一个奇怪的情况,似乎表明GORM缓存问题
//begin with all book.status's as UNREAD
Book.list().each { book.status = Status.READ ; book.save() }
println (Book.findAllByStatus (Status.READ)) //will print an empty list
println (Book.list().findAll (it.status == Status.READ)) // will print all books
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么最后两个查询会返回不同的结果.
但是,如果我对book.save做了以下修改(flush:true).这两个println语句都将返回所有书籍.
我的印象是,在单个应用程序中这不是必需的.
作为参考,我正在使用
@HoàngLong
我的问题如下所示,假设action1/action2被多次调用,没有特定的模式
def action1 = {
Foo foo = Foo.get(params.id)
//... modify foo
foo.save() //if I flush here, it will be inefficient if action1 is called in sequence
}
def action2 = {
//if I flush …
Run Code Online (Sandbox Code Playgroud) 我有4亿行独特的键值信息,我希望能够在脚本中快速查找.我想知道这样做的方式是什么.我确实考虑了以下但不确定是否有一种磁盘映射字典的方法,并且除了在字典创建期间没有使用大量内存.
如果有任何不清楚的地方,请告诉我.
谢谢!-Abhi
持久性和不可变数据结构有什么区别吗?维基百科在讨论持久性时指的是不可变数据结构,但我觉得两者之间可能存在细微差别.
所以,我想将字典存储在持久文件中.有没有办法使用常规字典方法来添加,打印或删除该文件中字典中的条目?
似乎我可以使用cPickle存储字典并加载它,但我不知道从哪里拿它.
我有一个问题,我觉得我没有找到一个满意的答案,或者我没有找到正确的地方.
我们的系统最初是使用.NET 1.1构建的(但是项目现在都支持3.5),并且所有实体都使用存储过程和具有标准ExecuteReader,ExecutreNonQuery类型方法的"SQLHelper"持久保存到数据库.
所以通常情况下我们将拥有我们的实体,例如User和Role,我们将有另一个名为UserIO的类,它使用以下方法将这些对象持久化到数据库:
static UserIO.SaveUser(User user)
Run Code Online (Sandbox Code Playgroud)
单独的IO文件的原因是为了使IO与实体分开,但是仅仅调用它会更令人满意吗?:
User.Save()
Run Code Online (Sandbox Code Playgroud)
也许我错了,但是让这些"IO"文件遍布整个地方感觉不对.所以我正在考虑寻找持久性的其他选择,我想知道哪里是最好的起点.我过去曾使用过数据集,但有一些混合经验,特别是它们的表现.我知道LINQ现在已经存在但是我听说我不应该使用LINO我应该使用ADO.NET实体框架但是其他人告诉我实体框架不太正确我应该等待C#4.0.如果是这种情况,并且C#4.0即将到来,我应该继续使用我的"IO"文件方法,并在C#4.0最终发布时从实体框架开始.或者是否可以使用更优雅的类结构,例如使用Partial Classes?
我应该说,我不是要完全取代已经存在的数据访问,我更关心我正在创建的新实体.
如果这个问题有点普遍,我很抱歉,但是我没有很多人来反复这种想法.
我有一个多步骤表单,它使用一个模型对象,我需要在步骤之间保持它.只有在最后一步之后,对象才会保存到数据库中.我见过人们建议使用HTML.Serialize但这个选项有多安全?
此外,我的模型对象将随着用户填写表单而增长,这意味着带有序列化数据的隐藏表单字段将增加我的HTML输出的大小.
对于这种情况,最好的做法是什么?
现在我有java程序,其类目前是POJO并存储在易失性存储器中.这些都需要坚持下去.据我所知,两个流行的选择是JDO和Java Persistence API.对于那些对SQL,Torque等知之甚少的人来说,这是为程序数据添加持久性的最简单方法吗?
不确定Bold/Eco在Borland/Codegear/Embarcadero过渡期间发生了什么,但我确实在新版本的Delphi中错过了它.有人知道一个接近的框架吗?
如果没有,也许你可以建议一个接近的库和组件的组合.
我使用的库为外部程序提供python接口.这允许我创建:
foo = Foo()
Run Code Online (Sandbox Code Playgroud)
上面的代码启动了我可以在python中控制的Foo程序的新实例.
我有一个python脚本,需要多次调用,并根据外部参数,告诉外部Foo程序的单个实例做不同的事情.显然我做不到
foo = Foo()
每次,
因为每次我的脚本运行时都会创建一个新的Foo实例.
我想要做的是创建foo= Foo()
一次,并让多个调用共享同一个实例.目前我只想创建一次,序列化它,并让我的脚本反序列化它.这种方法有效吗?还有更好的选择吗?
谢谢!!
我在表单的rtl Streaming中发生运行时错误,导致在执行TReader.ReadRootComponent时引发异常EClassNotFound.特定错误消息是"Class not found TActionList".
奇怪的是:
在实例化我几分钟前工作的表单时,这种情况发生在我身上.我做的改变是在一些子帧代码中:我用ifdef标记删除了它的所有实现部分代码,因为我正在模拟一些帧,用于单元测试和原型.
我尝试将动作列表类添加到项目中,我尝试使用和不使用各种编译器和链接选项,但是,我仍然得到此异常.显然有点奇怪了.必须有另一种奇怪的方法来解决这个问题.
事实上,似乎有一些非常奇怪的事情发生了.当引发此错误时,我得到以下调用堆栈:
rtl.Classes.ClassNotFound('TActionList')
rtl.Classes.TReader.FindComponentClass(???)
rtl.Classes.FindExistingComponent
rtl.Classes.TReader.ReadComponent(nil) /// NIL!? WHAT!!!!!
rtl.Classes.TReader.ReadDataInner(???)
rtl.Classes.TReader.ReadData(???)
rtl.Classes.TComponent.ReadState(???)
vcl.Controls.TControl.ReadState(???)
vcl.Controls.TWinControl.ReadState($60B9CF0)
vcl.Forms.TCustomForm.ReadState(???)
rtl.Classes.TReader.ReadRootComponent($606EB90)
rtl.Classes.TStream.ReadComponent($606EB90)
rtl.Classes.InternalReadComponentRes(???,???,$606EB90)
rtl.Classes.InitComponent(TComplexFormContainingFrames)
Run Code Online (Sandbox Code Playgroud)
似乎nil是故意的,在TReader.ReadDataInner(Instance:TComponent)中:
while not EndOfList do ReadComponent(nil);
Run Code Online (Sandbox Code Playgroud)
更新:我相信这个问题的答案是理解梅森提到的"序列化背景".并且,是时候承认我自己的愚蠢:我从项目中删除了框架的父级,没有意识到它是框架的父级.我通过将类型声明存根为TMyFrameParent
as TMyFrameParent = class(TFrame)
来解决这个问题,这反过来会导致问题.我在这里留下这个问题是因为我认为将来可能会非常方便地注意到这种异常发生在神秘的情况下,以及如何解决它.特别是,Mason有一些关于"序列化上下文"以及它们如何应用于类名查找的非常有趣的信息.
persistence ×3
python ×3
delphi ×2
bold-delphi ×1
c# ×1
delphi-xe ×1
dictionary ×1
exception ×1
grails ×1
grails-orm ×1
immutability ×1
java ×1
jdo ×1
razor ×1
sql-server ×1
viewmodel ×1