package org.jboss.hibernateUniversity.criteria.domain; import java.util.Date; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.hibernate.search.annotations.Analyzer; import org.hibernate.search.annotations.DateBridge; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Fields; import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.IndexedEmbedded; import org.hibernate.search.annotations.NumericField; import org.hibernate.search.annotations.Resolution; /** * @author Emmanuel Bernard */ @Entity @Indexed public class Book { @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } private Long id; @Fields( { @Field, @Field(name = "title_ngram", analyzer = @Analyzer(definition = "ngram") ) }) public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } private String title; @Fields( { @Field, @Field(name = "description_ngram", analyzer = @Analyzer(definition = "ngram") ) }) @Column(length = 10000) public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } private String description; @Temporal(TemporalType.DATE) @Field @DateBridge( resolution = Resolution.DAY) public Date getPublicationDate() { return publicationDate; } public void setPublicationDate(Date publicationDate) { this.publicationDate = publicationDate; } private Date publicationDate; @ManyToOne(cascade = CascadeType.PERSIST) @IndexedEmbedded public User getAuthor() { return author; } public void setAuthor(User author) { this.author = author; } private User author; @Field @NumericField public int getNumberOfPages() { return numberOfPages; } public void setNumberOfPages(int numberOfPages) { this.numberOfPages = numberOfPages; } private int numberOfPages; @Field @NumericField public int getStarred() { return starred; } public void setStarred(int starred) { this.starred = starred; } private int starred; @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append( "Book" ); sb.append( "{id=" ).append( id ).append( "\n" ); sb.append( ", title='" ).append( title ).append( '\'' ).append( "\n" ); sb.append( ", description='" ).append( description ).append( '\'' ).append( "\n" ); sb.append( ", publicationDate=" ).append( publicationDate ).append( "\n" ); sb.append( ", author=" ).append( author ).append( "\n" ); sb.append( ", numberOfPages=" ).append( numberOfPages ).append( "\n" ); sb.append( ", starred=" ).append( starred ).append( "\n" ); sb.append( '}' ).append( "\n" ); return sb.toString(); } }