小编Mar*_*tin的帖子

使用Criteria进行一对多的Hibernate搜索

我有一个名为Event的Hibernate实体,它有一对多的元数据实体EventData.

鉴于以下事件:


EventId:1 EventHash:西兰花

使用以下EventDatas:

EventDataId:1
EventId:1
Field:tag
Content:tagme

EventDataId:2
EventId:1
Field:tag
Content:anotherTag

如何创建Criteria查询以检索具有BOTH标签"anotherTag"和"tagme"的事件?在SQL中,我会为每个要搜索的标记加入event_data表,但我似乎只能为Event.EventData关系创建一个别名,即

int inc = 0;

Conjunction junc = Restrictions.conjunction();

for ( String tag : tags ) {
    crit.createAlias("e.EventData", "ed"+inc);
    junc.add(
        Restrictions.and(
            Restrictions.eq("ed"+inc+".field", "tag"),
            Restrictions.eq("ed"+inc+".content", tag)
        )
    );
    inc++;
}
Run Code Online (Sandbox Code Playgroud)

不起作用; duplicate association path: Event.EventData

类似地,正常的连接不起作用,因为该子句最终为:

((ed3_.field='tag' and ed3_.content='anotherTag') and (ed3_.field='tag' and ed3_.content='tagme'))
Run Code Online (Sandbox Code Playgroud)

而且,遗憾的是,数据库字段不能同时具有两个不同的值.

关于如何清理它的任何想法,或者是恢复到HQL的唯一选择?

java hibernate criteria one-to-many

4
推荐指数
1
解决办法
4695
查看次数

Java线程创建跟踪

我有一个Java应用程序,重点关注并发性和可突发容量.这意味着它使用线程池来排队和执行事件.

所有这些线程池都是固定大小的,但是当应用程序部署在Linux(CentOS 5.5)服务器上时,我经常发现自己遇到了打开文件描述符限制.

据我所知,应用程序在加载时,任何时候都不应该创建超过20个线程,但我的命中ulimit率为1024.

有没有什么办法可以跟踪这些线程回到创建它们的代码/池?

java linux multithreading centos5 threadpool

0
推荐指数
1
解决办法
706
查看次数