В последних версиях Hibernate Search вы просто используете @IndexedEmbedded(includePaths = "id")
.
Hibernate Search 3.4, однако, очень старый (9 лет), и в нем отсутствуют многие функции. Я бы порекомендовал вам обновить, поскольку вы, скорее всего, столкнетесь с ошибками, которые никогда не будут устранены в этой версии.
Если вам действительно нужно придерживаться версии 3.4, я думаю, что вашим единственным решением будет написание собственного моста. :
public class CustomerIdBridge implements StringBridge {
public String objectToString(Object object) {
Customer customer = (Customer) object;
if ( customer == null ) {
return null;
}
Object id = customer.getId();
return id == null ? null : id.toString();
}
}
Затем примените мост следующим образом:
@ManyToOne(...)
@Field(bridge = @FieldBridge(impl = CustomerIdBridge.class))
private Customer customer;
Полученное поле будет просто названо «customer» (то же имя, что и ваша собственность).
См. здесь для получения дополнительной информации о мостах в Hibernate Search 3.4.2.