Hibernate Search - Mapping a property to the document identifier explicitly with @DocumentId
Hibernate Search Explicit identifier mapping
Explicit identifier mapping is required in the following cases:The document identifier is not the entity identifier.
OR the entity identifier has a type that is not supported by default. This is the case of composite identifiers, in particular.
To select a property to map to the document identifier, just apply the @DocumentId annotation to that property:
Mapping a property to the document identifier explicitly with @DocumentId
@Entity
@Indexed
public class Book {
@Id
@GeneratedValue
private Integer id;
@NaturalId
@DocumentId
private String isbn;
public Book() {
}
// Getters and setters
// ...
}
When the property type is not supported, it is also necessary to implement a custom identifier bridge, then refer to it in the @DocumentId annotation:
Mapping a property with unsupported type to the document identifier with @DocumentId
@Entity
@Indexed
public class Book {
@Id
@Convert(converter = ISBNAttributeConverter.class)
@DocumentId(identifierBridge = @IdentifierBridgeRef(type = ISBNIdentifierBridge.class))
private ISBN isbn;
public Book() {
}
// Getters and setters
// ...
}
Comments
Post a Comment