在我的项目中,我有一些实体不能更改,但我需要在其中一个实体上创建索引。这是我想要归档的一个示例:
那就是我无法改变的实体:
@Entity
@Table(name = "main")
public class FirstEntity {
@Id
private Long id;
@ManyToOne
private SecondEntity secondaryEntity;
}
@Entity
@Table(name = "secondary")
public class SecondEntity {
@Id
private Long id;
private String name;
}
我的实体
@Indexed
@Entity
@Subselect("select * from main")
//@Table(name = "main")
//@Immutable
public class ThirdEntity {
@Id
private Long id;
@ManyToOne
private SecondEntity secondaryEntity;
@Transient
@GenericField(sortable = Sortable.YES)
@IndexingDependency(derivedFrom = {
@ObjectPath(@PropertyValue(propertyName = "secondaryEntity"))
})
public String getName() {
return secondaryEntity.getName();
}
}
只要SecondEntity变更,ThirdEntity的索引就会维持不变。
我写了一个简单的例子https://github.com/YaroslavTir/reindex-subselect-entity
我想到了一个变通的解决方案。使用hibernateListeners并手动为ThirdEntity重建索引,但这并不是一个很好的解决方案。
1条答案
按热度按时间myss37ts1#
您的索引依赖项注解不完整,它应该类似于: