Giriş
Şu satırı dahil ederiz.
Örnek
Şöyle yaparız
Şu satırı dahil ederiz.
import org.hibernate.search.annotations.Indexed;
Açıklaması şöyle
... the @Index annotation indicates to Hibernate Search that we want to index this entity in order to apply search operation on it.
Şöyle yaparız
@Entity
@Indexed
@Table(name = "ApplicationTypeCreation")
public class ApplicationTypeCreation extends Application {
...
}
ÖrnekŞöyle yaparız
import org.hibernate.annotations.NaturalId;
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.FullTextField;
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed;
import javax.persistence.*;
import java.time.Instant;
@Indexed
@Entity
@Table(name = "plant")
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class Plant {
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@FullTextField()
@NaturalId()
private String name;
@FullTextField()
@NaturalId()
private String scientificName;
@FullTextField()
private String family;
}
routingBinder Alanı - Conditional Index İçindirÖrnek
Şöyle yaparız. Burada indeksleme koşulunu belirtiyoruz. Eğer name ismi rosaceae ise nesne indekslenmez. Burada RoutingBridge arayüzünden kalıtan sınıf nested kullanılıyor ama harici bir sınıf ta olabilir. RoutingBridge nesnesi RoutingBinder ile Hibernate'e tanıtılır.
public class PlantRoutingBinder implements RoutingBinder {
private static final String FIELD_TO_USE = "name";
private static final List<String> FAMILIES_TO_IGNORE = Arrays.asList("rosaceae");
@Override
public void bind(RoutingBindingContext context) {
context.dependencies().use(FIELD_TO_USE);
context.bridge(Plant.class, new Bridge());
}
public static class Bridge implements RoutingBridge<Plant> {
@Override
public void route(
DocumentRoutes routes,
Object entityIdentifier,
Plant indexedEntity,
RoutingBridgeRouteContext context) {
if (FAMILIES_TO_IGNORE.contains(indexedEntity.getFamily())) {
routes.notIndexed();
} else {
routes.addRoute();
}
}
@Override
public void previousRoutes(
DocumentRoutes routes,
Object entityIdentifier,
Plant indexedEntity,
RoutingBridgeRouteContext context) {
routes.addRoute();
}
}
}
ve kullanmak için şöyle yaparız@Indexed(routingBinder = @RoutingBinderRef(type = PlantRoutingBinder.class))
@Entity
@Table(name = "plant")
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class Plant {
...
}
Hiç yorum yok:
Yorum Gönder