Last active
November 11, 2023 19:46
-
-
Save nanotaboada/0b3290bb0a422f1c57a9445dd37f8869 to your computer and use it in GitHub Desktop.
JPA Entity Bean for a Book
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.time.LocalDate; | |
import javax.persistence.Entity; | |
import javax.persistence.Id; | |
import javax.persistence.Lob; | |
import javax.persistence.Table; | |
import javax.validation.constraints.NotBlank; | |
import javax.validation.constraints.Past; | |
import org.hibernate.validator.constraints.ISBN; | |
import org.hibernate.validator.constraints.URL; | |
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | |
import com.fasterxml.jackson.databind.annotation.JsonSerialize; | |
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; | |
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; | |
@Entity | |
@Table(name = "books") | |
public class Book { | |
@Id | |
@ISBN | |
private String isbn; | |
@NotBlank(message ="Title is required.") | |
private String title; | |
private String subtitle; | |
@NotBlank(message ="Author is required.") | |
private String author; | |
private String publisher; | |
@Past | |
@JsonDeserialize(using = LocalDateDeserializer.class) | |
@JsonSerialize(using = LocalDateSerializer.class) | |
private LocalDate published; | |
private int pages; | |
@Lob | |
@NotBlank(message ="Description is required.") | |
private String description; | |
@URL | |
@NotBlank(message ="Website is required.") | |
private String website; | |
// The no-argument constructor, which is also a JavaBean convention, is a requirement for all | |
// persistent classes. | |
// https://docs.jboss.org/hibernate/orm/5.5/quickstart/html_single/ | |
public Book() { } | |
public String getIsbn() { | |
return isbn; | |
} | |
public void setIsbn(String isbn) { | |
this.isbn = isbn; | |
} | |
public String getTitle() { | |
return title; | |
} | |
public void setTitle(String title) { | |
this.title = title; | |
} | |
public String getSubtitle() { | |
return subtitle; | |
} | |
public void setSubtitle(String subtitle) { | |
this.subtitle = subtitle; | |
} | |
public String getAuthor() { | |
return author; | |
} | |
public void setAuthor(String author) { | |
this.author = author; | |
} | |
public String getPublisher() { | |
return publisher; | |
} | |
public void setPublisher(String publisher) { | |
this.publisher = publisher; | |
} | |
public LocalDate getPublished() { | |
return published; | |
} | |
public void setPublished(LocalDate published) { | |
this.published = published; | |
} | |
public int getPages() { | |
return pages; | |
} | |
public void setPages(int pages) { | |
this.pages = pages; | |
} | |
public String getDescription() { | |
return description; | |
} | |
public void setDescription(String description) { | |
this.description = description; | |
} | |
public String getWebsite() { | |
return website; | |
} | |
public void setWebsite(String website) { | |
this.website = website; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment