io.zenwave360.sdk.jpa2jdl.Post Maven / Gradle / Ivy
package io.zenwave360.sdk.jpa2jdl;
import java.io.Serializable;
import java.time.Instant;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
* A Post.
*/
@Entity
@Table(name = "post")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Post implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
@Column(name = "id")
private Long id;
@NotNull
@Column(name = "title", nullable = false)
private String title;
@Lob
@Column(name = "content", nullable = false)
private String content;
@NotNull
@Column(name = "date", nullable = false)
private Instant date;
@Enumerated
private PostType postType;
@ManyToOne
private Blog blog;
@ManyToMany
@JoinTable(name = "rel_post__tag", joinColumns = @JoinColumn(name = "post_id"), inverseJoinColumns = @JoinColumn(name = "tag_id"))
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@JsonIgnoreProperties(value = {"posts"}, allowSetters = true)
private Set tags = new HashSet<>();
// jhipster-needle-entity-add-field - JHipster will add fields here
public Long getId() {
return this.id;
}
public Post id(Long id) {
this.setId(id);
return this;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return this.title;
}
public Post title(String title) {
this.setTitle(title);
return this;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return this.content;
}
public Post content(String content) {
this.setContent(content);
return this;
}
public void setContent(String content) {
this.content = content;
}
public Instant getDate() {
return this.date;
}
public Post date(Instant date) {
this.setDate(date);
return this;
}
public void setDate(Instant date) {
this.date = date;
}
public Blog getBlog() {
return this.blog;
}
public void setBlog(Blog blog) {
this.blog = blog;
}
public Post blog(Blog blog) {
this.setBlog(blog);
return this;
}
public Set getTags() {
return this.tags;
}
public void setTags(Set tags) {
this.tags = tags;
}
public Post tags(Set tags) {
this.setTags(tags);
return this;
}
public Post addTag(Tag tag) {
this.tags.add(tag);
tag.getPosts().add(this);
return this;
}
public Post removeTag(Tag tag) {
this.tags.remove(tag);
tag.getPosts().remove(this);
return this;
}
// jhipster-needle-entity-add-getters-setters - JHipster will add getters and setters here
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Post)) {
return false;
}
return id != null && id.equals(((Post) o).id);
}
@Override
public int hashCode() {
// see https://vladmihalcea.com/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/
return getClass().hashCode();
}
// prettier-ignore
@Override
public String toString() {
return "Post{" +
"id=" + getId() +
", title='" + getTitle() + "'" +
", content='" + getContent() + "'" +
", date='" + getDate() + "'" +
"}";
}
}