用于休眠搜索的复合构面

时间:2017-11-13 14:25:17

标签: java hibernate lucene hibernate-search

我有两个实体:ActionUser,具有多对一的关系 我搜索了一些操作,并希望获得一个user full name方面,但我没有数据库中的full_name列,而是first_namelast_name。< / p>

有没有办法在hibernate搜索中创建一个将firstNamelastName组合在一起的组合方面?或者有没有办法创建一个组合字段fullName,它将存在于搜索索引(带有构面)但不存在于数据库中?

映射如下:

@Entity
public class Action {

    ...

    @IndexEmbedded
    private User user;

}


@Entity
public class User {

    ...

    @Facet
    @Field(analyze = Analyze.NO)
    private String firstName;

    @Facet
    @Field(analyze = Analyze.NO)
    private String lastName;

}

1 个答案:

答案 0 :(得分:2)

您可以在User对象的方法上使用@Facet和@Field。

所以你可以定义类似的东西:

@Facet
@Field
public String getFullName() {
   return new StringJoiner(" ").add(firstName).add(lastName).toString();
}