Java tutorial
/* * Copyright 2016. junfu * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.lazulite.boot.autoconfigure.core.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.domain.Persistable; import javax.persistence.*; import java.io.Serializable; import java.time.ZonedDateTime; @MappedSuperclass public abstract class BaseEntity<ID extends Serializable> implements Persistable<ID> { @Id @GeneratedValue(strategy = GenerationType.AUTO) //@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq") //@SequenceGenerator(name="seq",sequenceName="common_seq",allocationSize=1,initialValue=5000) private ID id; @CreatedBy @Column(name = "created_by", length = 50, updatable = false) @JsonIgnore private String createdBy; @CreatedDate @Column(name = "created_date") @Convert(converter = ZonedDateTimeConverter.class) @JsonIgnore private ZonedDateTime createdDate = ZonedDateTime.now(); @LastModifiedBy @Column(name = "last_modified_by", length = 50) @JsonIgnore private String lastModifiedBy; @LastModifiedDate @Column(name = "last_modified_date") @Convert(converter = ZonedDateTimeConverter.class) @JsonIgnore private ZonedDateTime lastModifiedDate = ZonedDateTime.now(); public ID getId() { return id; } public void setId(ID id) { this.id = id; } public String getCreatedBy() { return createdBy; } public void setCreatedBy(String createdBy) { this.createdBy = createdBy; } public ZonedDateTime getCreatedDate() { return createdDate; } public void setCreatedDate(ZonedDateTime createdDate) { this.createdDate = createdDate; } public String getLastModifiedBy() { return lastModifiedBy; } public void setLastModifiedBy(String lastModifiedBy) { this.lastModifiedBy = lastModifiedBy; } public ZonedDateTime getLastModifiedDate() { return lastModifiedDate; } public void setLastModifiedDate(ZonedDateTime lastModifiedDate) { this.lastModifiedDate = lastModifiedDate; } public boolean isNew() { return null == getId(); } /* * (non-Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if (null == obj) { return false; } if (this == obj) { return true; } if (!getClass().equals(obj.getClass())) { return false; } BaseEntity<?> that = (BaseEntity<?>) obj; return null == this.getId() ? false : this.getId().equals(that.getId()); } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ public int hashCode() { int hashCode = 17; hashCode += null == getId() ? 0 : getId().hashCode() * 31; return hashCode; } public String toString() { return ReflectionToStringBuilder.toString(this); } }