小编Chr*_*ton的帖子

Hibernate(JPA)如何做一个急切的查询,加载所有子对象

关于我之前的问题,我想确保加载所有子对象,因为我有一个可能需要访问数据的多个线程(从而避免延迟加载异常).我知道这样做的方法是在查询中使用"fetch"关键字(EJB QL).像这样:

select distinct o from Order o left join fetch o.orderLines
Run Code Online (Sandbox Code Playgroud)

假设一个模型的Order类中包含一组OrderLines.

我的问题是,似乎需要"distinct"关键字,否则我似乎会Order为每个关键字取回一个OrderLine.我做对了吗?

也许更重要的是,有没有办法拉入所有儿童物品,无论多深?我们有大约10-15个类,对于服务器,我们将需要加载的所有东西......我正在避免使用,FetchType.EAGER因为这意味着它总是渴望,特别是Web前端加载一切 - 但也许这是要走的路 - 是你做什么?我似乎记得我们之前尝试过这个,然后得到非常慢的网页 - 但也许这意味着我们应该使用二级缓存?

java hibernate jpa ejbql

20
推荐指数
2
解决办法
5万
查看次数

如何维护运行两个Java应用程序的Hibernate缓存一致性?

我们的设计有一个jvm,它是一个jboss/webapp(读/写),用于通过hibernate(使用jpa)维护数据到db.该模型具有10-15个持久类,在关系中具有3-5个深度级别.

然后我们有一个单独的jvm,它是使用这些数据的服务器.当它连续运行时,我们只有一个长db会话(只读).

目前没有涉及jvm内部缓存 - 所以我们手动发信号通知另一个jvm.

现在,当webapp更改某些数据时,它会通知服务器重新加载已更改的数据.我们发现我们需要告诉hibernate清除数据然后重新加载它.只是对数据库进行提取/合并不起作用 - 主要是关于层次结构中几层的对象.

关于这个设计是否存在根本性错误的任何想法,或者是否有人这样做,并且在重新加载时使用hibernate有更好的运气.

谢谢,克里斯

java caching hibernate

8
推荐指数
2
解决办法
1万
查看次数

Rails测试显示0%通过时全部通过

我的Rails应用程序通过了测试,但随后说0%通过了.它的Rails 3应用程序转换为3.1.

5 tests, 11 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
0% passed
Run Code Online (Sandbox Code Playgroud)

如果我生成一个新的Rails 3.1应用程序,它没有这个"通过"线.

1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
Run Code Online (Sandbox Code Playgroud)

两者都在1.9.2 p290下运行.

我试图删除测试单元,但这似乎没有什么区别,没有其他任何突出的东西会导致它.我想有些东西正在触发使用不同的测试运行器.

这些是我的应用程序安装的宝石:

actionmailer (3.1.1)
actionpack (3.1.1)
activemodel (3.1.1)
activerecord (3.1.1)
activeresource (3.1.1)
activesupport (3.1.1)
ansi (1.3.0)
archive-tar-minitar (0.5.2)
arel (2.2.1)
bcrypt-ruby (3.0.1)
bootstrap-sass (1.3.0)
builder (3.0.0)
bundler (1.0.21)
coderay (0.9.8)
coffee-rails (3.1.1)
coffee-script (2.2.0)
coffee-script-source (1.1.2)
columnize (0.3.4)
devise (1.4.7)
devise_rpx_connectable (0.2.2)
enumerated_attribute (0.2.16)
erubis (2.7.0)
execjs (1.2.9) …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails-3 ruby-on-rails-3.1

8
推荐指数
1
解决办法
1928
查看次数

如何在Rails/ActiveRecord中一次使用多个聚合函数?

我想一次做几个聚合函数,例如获取按状态分组的最大和最小ID:

Model.maximum(:id).minimum(:id).group(:status)
Run Code Online (Sandbox Code Playgroud)

这不起作用(至少使用Rails 3.1.1) - 你在最小调用上得到一个错误,说它没有在Fixnum上定义.

NoMethodError: undefined method `minimum' for 22377:Fixnum
Run Code Online (Sandbox Code Playgroud)

我可以为它做原始的SQL - 但只是想知道是否有更高级别/ Rails选项...

谢谢,克里斯

ruby activerecord ruby-on-rails

8
推荐指数
3
解决办法
1万
查看次数

如何使用Ruby/Rails中的namespaces /子目录动态加载类?

在我的Rails 3.1应用程序(使用Ruby 1.9)中,我有一个Deployer1类,位于model目录下的worker子目录中

我试图使用以下代码动态加载/实例化此类:

clazz = item.deployer_class  # deployer_class is the class name in a string
deployer_class = Object.const_get clazz
deployer = deployer_class.new
Run Code Online (Sandbox Code Playgroud)

如果我不使用名称空间,例如像这样的全局:

class Deployer1
end
Run Code Online (Sandbox Code Playgroud)

然后它工作正常(deployer_class ="Deployer1") - 它可以加载类并创建对象.

如果我尝试将它放入一个模块来命名它,如下所示:

module Worker
    class Deployer1
    end
end
Run Code Online (Sandbox Code Playgroud)

它不起作用(deployer_class ="Worker :: Deployer1") - 给出一个关于缺少常量的错误,我相信这意味着它找不到类.

我可以通过我的Rails代码以静态方式访问该类(Worker :: Deployer1.new) - 所以Rails配置正确加载它,也许我正在以错误的方式加载它...

编辑:那么,根据弗拉德的回答,我采用的解决方案是:

deployer_class.constantize.new
Run Code Online (Sandbox Code Playgroud)

谢谢克里斯

ruby ruby-on-rails-3

7
推荐指数
2
解决办法
4940
查看次数

如何在jruby中将Java Map转换为json

我有一个Java HashMap,我在JRuby,我试图将其转换为JSON,但它没有正确转换,我认为这个例子显示了问题:

$ irb                                                                            [17:23:50]
irb(main):001:0> require 'java'
=> false
irb(main):003:0> require 'json'
=> true
irb(main):005:0> h = java.util.HashMap.new()
=> {}
irb(main):006:0> x = {}
=> {}
irb(main):007:0> JSON.parse JSON.dump x
=> {}

irb(main):008:0> JSON.parse JSON.dump h
JSON::ParserError: unexpected token at '"{}"'
    from json/ext/Parser.java:251:in `parse'
    from /Users/kimptoc/.rvm/rubies/jruby-1.7.3/lib/ruby/1.9/json/common.rb:155:in `parse'
    from (irb):9:in `evaluate'
    from org/jruby/RubyKernel.java:1066:in `eval'
    from org/jruby/RubyKernel.java:1409:in `loop'
    from org/jruby/RubyKernel.java:1174:in `catch'
    from org/jruby/RubyKernel.java:1174:in `catch'
    from /Users/kimptoc/.rvm/rubies/jruby-1.7.3/bin/irb:13:in `(root)'
irb(main):010:0> JSON.dump h
=> "\"{}\""
Run Code Online (Sandbox Code Playgroud)

关于如何处理这个问题的任何想法 - 我是否需要将地图转换为Ruby地图?

谢谢,克里斯

java json jruby rvm

6
推荐指数
1
解决办法
818
查看次数

如何使用Ant将jsp预编译的web.xml片段与主web.xml合并

我们的web应用程序有通常的web.xml,其中包含一些jsp和jsp标记文件.我想切换到使用预编译的jsp.我在build ok中进行了预编译,它生成了web.xml片段,现在我想将片段合并到主web.xml中.

是否有web.xmlinclude类型指令可以让我包含片段.

理想情况下,我会保留DEV的内容,因为它有助于动态更改jsp并立即查看更改,但是对于UAT/PROD,jsp将被预编译,从而更快地工作.

java ant jsp tomcat web.xml

5
推荐指数
1
解决办法
8647
查看次数

在.Net/C#中是为XmlSerializer.Serialize触发的OnSerializing事件

我想在序列化对象之前设置一些属性,但是因为它可以从多个位置序列化,有没有办法使用OnSerializing方法(或类似)进行Xml序列化 - 我的类很像这样 - 但是On ...方法没有被调用...:

[Serializable]
[XmlRoot(ElementName = "ResponseDetails", IsNullable = false)]
public class ResponseDetails
{
    public ResponseDetails() {}


    [OnSerializing]
    internal void OnSerializingMethod(StreamingContext context)
    {
        logger.Info("Serializing response");
    }

    [OnSerialized]
    internal void OnSerializedMethod(StreamingContext context)
    {
        logger.Info("Serialized response");
    }

    [OnDeserialized]
    internal void OnDeserializedMethod(StreamingContext context)
    {
        logger.Info("Deserialized response");
    }

    [OnDeserializing]
    internal void OnDeserializingMethod(StreamingContext context)
    {
        logger.Info("Deserializing response");
    }
Run Code Online (Sandbox Code Playgroud)

.net c#

5
推荐指数
1
解决办法
4066
查看次数

如何通过VBA获取/设置Excel中单元格的唯一ID

我希望为Excel数据表中的每个数据行设置/定义一个唯一的ID - 这样我可以在向前传递数据时使用它,并且当在其上面添加/删除行时它保持不变.

我的想法是使用Range的ID属性(msdn link)

所以,我有一个用户定义的函数(UDF),我放在每一行获取/设置ID,如下所示:

Dim gNextUniqueId As Integer

Public Function rbGetId(ticker As String)
    On Error GoTo rbGetId_Error
    Dim currCell As Range
    'tried using Application.Caller direct, but gives same error
    Set currCell = Range(Application.Caller.Address)
    If currCell.id = "" Then
        gNextUniqueId = gNextUniqueId + 1
        'this line fails no matter what value I set it to.
        currCell.id = Str(gNextUniqueId)
    End If
    rbGetId = ticker & currCell.id
    Exit Function

    rbGetId_Error:
    rbGetId = "!ERROR:" & Err.Description
End Function
Run Code Online (Sandbox Code Playgroud)

但这在提到的那条线路上失败了

"应用程序定义的或对象定义的错误" …

excel vba excel-vba

5
推荐指数
1
解决办法
1万
查看次数

Ruby守护进程和JRuby - 替代选项

我有一个应用程序,我从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全性支持).我使用的一个宝石是用于创建后台作业的守护进程.

问题是它使用fork + exec来创建后台进程,但这对JRuby来说是禁忌.

那么 - 是否有用于创建后台作业的替代gem/wrapper?

我目前的想法是从shell脚本调用rake并让rake任务永远运行...

谢谢,克里斯.

更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-schedulerhttps://github.com/philostler/acts_as_executor

ruby fork jruby

5
推荐指数
1
解决办法
4283
查看次数