当前位置: 首页 > 面试题库 >

休眠搜索顺序(按孩子数)

太叔凌龙
2023-03-14
问题内容

考虑:

@Indexed
@Entity
public class TParent  implements java.io.Serializable {

 .....
 private Set<TChild> TChildSet = new HashSet<TChild>(0);

 @ContainedIn
 @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="TParent")
 public Set<TChild> getTChildSet() {
     return this.TChildSet;
 }

查询将是这样的:

FullTextQuery hibQuery = fullTextSession.createFullTextQuery( luceneQuery );
hibQuery.setSort( ... )

如何实现按孩子计数?

换句话说,返回的TParent列表的顺序将由TChildSet计数决定。

我知道@Formula可以在SQL环境中使用。我不确定Lucene是否可以使用类似的东西?

任何帮助,指点,评论甚至批评都欢迎。

非常感谢约翰


问题答案:

在hibernate搜索中,您可以为此创建一个自定义Bridge。

类似于以下内容:

@FieldBridge(impl = com.myco.myapp.CollectionCountBridge.class)
@ContainedIn
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="TParent")
public Set<TChild> getTChildSet() {
     return this.TChildSet;
}

使用自定义桥实现:

public class CollectionCountBridge extends PaddedIntegerBridge {

    @Override
    public String objectToString(Object object) {
        if (object == null || (!(object instanceof Collection))) {
            return null;
        }
        Collection<?> coll = (Collection<?>) object;
        return super.objectToString(coll.size());
    }
}


 类似资料:
  • 问题内容: 在按列对desc排序时,与PostgreSQL DB一起使用的Hibernate会将空值设置为大于非空值。 SQL99标准提供了关键字“ NULLS LAST”来声明应将空值设置为低于非空值。 使用Hibernate的Criteria API是否可以实现“ NULLS LAST”行为? 问题答案: 鉴于HHH-465尚未修复,并且由于史蒂夫·埃伯索尔(Steve Ebersole)给出

  • 问题内容: 是否可以仅对hibernate-search的注释(bean => document / document => bean mapping)使用hibernate-search,而不使用数据库?如果是这样,是否有任何在线样本基本上显示了如何进行设置? 我发现了以下内容:http : //mojodna.net/2006/10/02/searchable-annotation-drive

  • 问题内容: 我有这样的JPA实体类: 我需要这样的搜索方法 用法示例: 我对findAll方法的想法是 但这太丑陋了,看起来有些开销。谁能帮助我更礼貌地邀请该方法?我可以使用任何Java技术或框架。 问题答案: 所以您要寻找 原型 吗?Hibernate为此提供了一个方便的标准,因此,如果您不介意将自己与Hibernate API捆绑在一起,请尝试以下来自docs的示例: 它具体说: 版本属性,标

  • 问题内容: 我想知道如何使用Range-Query在Hibernate Search中按日期进行搜索,还是我必须实现任何过滤器?以下是我在Record Entity中的字段 我的要求是找到两个日期之间分析的记录,例如。2011年11月11日至2012年11月11日。我很困惑如何执行此操作。 问题答案: 您应该使用 从 和 到 的范围查询。 因为您使用 DateTools 自己创建了基于字符串的搜索

  • 我这里的问题是,获取promise在当前文本之前创建了几个字符,然后在最后创建的promise之后解析。我需要解决的最后一个promise的最新或取消以前的promise时,我改变了文本。 我希望结果总是最新的。 我查找了一些搜索栏示例,但什么也没找到。 我很确定解决方案是保存以前的promise,如果在你创建一个新promise时它仍然悬而未决,就取消它,但是我不知道如何取消promise。 谢

  • 我想按姓名、姓氏或电子邮件搜索用户,但由于我没有上述级别的用户密钥,我不知道如何实现这一点。我正在执行和管理员会话,因此它无法访问用户密钥。 我尝试过: 但它会把所有用户都带到数据库上。有什么想法吗?