package com.mycompany.myapp.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer; import com.mycompany.myapp.domain.util.CustomLocalDateSerializer; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Type; import org.joda.time.LocalDate; import javax.persistence.*; import java.io.Serializable; import java.math.BigDecimal; import java.util.HashSet; import java.util.Set; /** * A Book. */ @Entity @Table(name = "T_BOOK") @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class Book implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "title") private String title; @Column(name = "description") private String description; @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate") @JsonDeserialize(using = LocalDateDeserializer.class) @JsonSerialize(using = CustomLocalDateSerializer.class) @Column(name = "publication_date", nullable = false) private LocalDate publicationDate; @Column(name = "price", precision=10, scale=2) private BigDecimal price; @ManyToOne private Author author; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public LocalDate getPublicationDate() { return publicationDate; } public void setPublicationDate(LocalDate publicationDate) { this.publicationDate = publicationDate; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Author getAuthor() { return author; } public void setAuthor(Author author) { this.author = author; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Book book = (Book) o; if (id != null ? !id.equals(book.id) : book.id != null) return false; return true; } @Override public int hashCode() { return (int) (id ^ (id >>> 32)); } @Override public String toString() { return "Book{" + "id=" + id + ", title='" + title + "'" + ", description='" + description + "'" + ", publicationDate='" + publicationDate + "'" + ", price='" + price + "'" + '}'; } }