【发布时间】:2018-06-20 18:39:36
【问题描述】:
两个不同的实体指向数据库中的同一个表,休眠搜索可以为它们创建和管理一个索引,因为从技术上讲它们指向同一个表?在我的场景中,创建了两个不同的索引。我怎样才能告诉休眠搜索在同一个索引上工作
Person1.java
@Entity
@Indexed(index = "com.Company.Person")
@Table(name = "Person")
public class Person
{
@Id
@Column(name = "PERSON_ID")
Long id;
@Field
@Column(name = "NAME_FIRST_KEY")
String firstKey;
}
Person2.java
@Entity
@Indexed(index = "com.Company.Person")
@Table(name = "Person")
public class WritablePerson
{
@Id
@Column(name = "PERSON_ID")
Long id;
@Field
@Column(name = "NAME_FIRST_KEY")
String firstKey;
}
我已经让两个类都指向同一个索引“com.Company.Person”,但它仍然根据索引中的 _hibernate_class 将它们分开。
我有两个实体指向同一个表的原因是,在我们的生产代码中,我们有两个不同的实体。一个用于写入,另一个用于读取。所以我希望我的索引是同步的。
如果我使用相同的实体进行读写,那么一切都会按预期工作。 但是有没有其他方法可以使上述场景正常工作?
【问题讨论】:
-
你考虑过使用多对一的表吗?
-
出于好奇,为什么你有两个不同的实体用于写入和读取同一个表?我想你正在实现 CQRS,但我认为它通常是在更高级别实现的:有一个低级、JPA 注释的模型,非常适合你的数据库,然后有两个不同的更高级别的查询和命令使用适当的表示在其之上的模型,例如使用自动对象映射器,例如mapstruct。这不是通常的做法吗?
标签: java hibernate orm lucene hibernate-search