作者:告非言普 | 来源:互联网 | 2023-09-14 10:09
我有一个实体产品,该产品具有属性“制造商”。
制造商有自己的桥梁来获取索引数据。
当使用Hibernate Search编制索引时,对于Product的Manufacturer属性为null的情况,我想向该产品添加一个标记“ manufacturer_not_set”。稍后,我可以通过查询此令牌来发出查询,以获取没有制造商的产品。
有没有办法得到这种行为?谢谢!
P.S。我提供的代码无法正常工作:如果不为null,则以正确的方式处理制造商,但如果为null,则什么也不会发生。我确实将log.trace()放入了bridge方法,当Manufacturer为null,但是没有存储令牌时,索引器调用了bridge方法。
@Entity @Indexed
public class Product {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;
@Field(index=Index.YES,analyze=Analyze.YES,store=Store.NO,bridge = @FieldBridge(impl = ManufacturerBridge.class))
private Manufacturer manufacturer;
}
public class ManufacturerBridge implements StringBridge {
@Override
public String objectToString(final Object object) {
if (object == null) { return "manufacturer_not_set"; }
if (object instanceof Manufacturer) {
return "manufacturer_" + ((Manufacturer) object).getId();
}
return "";
}
}