give me a test for this Ebean object CRUD ; 

package com.munvo.EventGateway.models.dbo;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import com.avaje.ebean.Model;
import com.avaje.ebean.annotation.SoftDelete;
import com.munvo.EventGateway.models.json.RolesJSON;
import com.munvo.EventGateway.models.json.GatewayUserJSON;
import com.munvo.EventGateway.utils.Crypt;
import com.munvo.EventGateway.utils.SystemTime;

@Entity
@Table(name = "gateway\_user")
public class EB\_Gateway\_User extends Model {

 @Id
 @Column(name = "id")
 private Long id;

 @Column(name = "username")
 private String username;

 @Column(name = "password")
 private String password;

 @Column(name = "tcreated")
 private Timestamp createdTimestamp;

 @Column(name = "tupdated")
 private Timestamp updatedTimestamp;

 @Column(name = "active")
 private Integer active;

 @SoftDelete
 @Column(name = "deleted")
 private Boolean deleted;

 @Column(name = "forcepassreset")
 private Integer forcePassReset;

 @OneToOne
 @JoinColumn(name = "roleid", referencedColumnName = "id")
 private EB\_Roles role;

 @Column(name = "tokensalt")
 private String tokenSalt;

 @Column(name = "externaltoken")
 private String externalToken;

 @Override
 public void save() {
 if (this.createdTimestamp == null)
 this.setCreatedTimestamp((new Timestamp(SystemTime.getCurrentTime())));
 this.setUpdatedTimestamp((new Timestamp(SystemTime.getCurrentTime())));

 if (this.id == null)
 super.save();
 else
 super.update();
 }
 
 @Override
 public void update() {
 this.setUpdatedTimestamp((new Timestamp(SystemTime.getCurrentTime())));
 super.update();
 }

 public Long getId() {
 return id;
 }

 public void setId(Long id) {
 this.id = id;
 }

 public String getUsername() {
 return username;
 }

 public void setUsername(String username) {
 this.username = username.toLowerCase();
 }

 public String getPassword() {
 return Crypt.decrypt(password);
 }

 public void setPassword(String password) {
 this.password = Crypt.encrypt(password);
 }

 public Timestamp getCreatedTimestamp() {
 return createdTimestamp;
 }

 public void setCreatedTimestamp(Timestamp createdTimestamp) {
 this.createdTimestamp = createdTimestamp;
 }

 public Timestamp getUpdatedTimestamp() {
 return updatedTimestamp;
 }

 public void setUpdatedTimestamp(Timestamp updatedTimestamp) {
 this.updatedTimestamp = updatedTimestamp;
 }

 public Integer getActive() {
 return active;
 }

 public void setActive(int active) {
 this.active = active;
 }

 public Boolean getDeleted() {
 return deleted;
 }

 public void setDeleted(Boolean deleted) {
 this.deleted = deleted;
 }

 public Integer getForcePassReset() {
 return forcePassReset;
 }

 public void setForcePassReset(Integer forcePassReset) {
 this.forcePassReset = forcePassReset;
 }

 public void setRole(EB\_Roles role) {
 this.role = role;
 }

 public EB\_Roles getRole() {
 return this.role;
 }

 public String getTokenSalt() {
 return tokenSalt;
 }

 public void setTokenSalt(String tokenSalt) {
 this.tokenSalt = tokenSalt;
 }

 public String getExternalToken() {
 return externalToken;
 }

 public void setExternalToken(String externalToken) {
 this.externalToken = externalToken;
 }

 @Transient
 public GatewayUserJSON toUsersJSON() {
 GatewayUserJSON userJSON = new GatewayUserJSON();
 RolesJSON roleJSON = new RolesJSON();

 roleJSON.id = this.role.getId();
 roleJSON.rolename = this.role.getRolename();

 userJSON.id = id;
 userJSON.username = username;
 userJSON.password = Crypt.decrypt(password);
 userJSON.createdTimestamp = createdTimestamp.toString();
 userJSON.updatedTimestamp = updatedTimestamp.toString();
 userJSON.deleted = deleted;
 userJSON.active = active;
 userJSON.forcePassReset = forcePassReset;
 userJSON.role = roleJSON;

 return userJSON;
 }
}
이 Ebean 객체 CRUD 에 대한 테스트를 제공해 주세요; 패키지 com.munvo.EventGateway.models.dbo;java.sql.타임스탬프 임포트;javax.persistence.Column을 가져옵니다;import javax.persistence.Entity;javax.persistence.Id;javax.persistence.JoinColumn을 가져옵니다;javax.persistence.OneToOne;javax.persistence.Table;javax.persistence.Transient;import com.avaje.ebean.Model;com.avaje.ebean.annotation.SoftDelete를 가져옵니다;com.munvo.EventGateway.models.json.RolesJSON을 가져옵니다;com.munvo.EventGateway.models.json.GatewayUserJSON을 가져옵니다;com.munvo.EventGateway.utils.Crypt를 가져옵니다;com.munvo.EventGateway.utils.SystemTime을 가져옵니다;엔티티@Table(name = "gateway\_user")public class EB\_Gateway\_User extends Model { @Id Column(name = "id") private Long id; @Column(name = "username") private String username; @Column(name = "password") private String password; @Column(name = "tcreated") private 타임스탬프 생성된 타임스탬프; 칼럼(이름 = "tupdated") private 타임스탬프 업데이트된 타임스탬프; @Column(name = "active") private 정수 활성; @SoftDelete 칼럼(이름 = "삭제됨") private Boolean deleted; @Column(name = "forcepassreset") private Integer forcePassReset; 일대일 조인 컬럼(이름 = "roleid", 참조된 컬럼 이름 = "id") private EB\_Roles role; @Column(name = "tokensalt") private String tokenSalt; @Column(name = "externaltoken") private String externalToken; @Override public void save() { if (this.createdTimestamp == null) this.setCreatedTimestamp((new Timestamp(SystemTime.getCurrentTime()))); this.setUpdatedTimestamp((new Timestamp(SystemTime.getCurrentTime()))); if (this.id == null) super.save(); else super.update(); }  @Override public void update() { this.setUpdatedTimestamp((new Timestamp(SystemTime.getCurrentTime()))); super.update(); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { 사용자명을 반환합니다; } public void setUsername(String username) { this.username = username.toLowerCase(); } public String getPassword() { return Crypt.decrypt(password); } public void setPassword(String password) { this.password = Crypt.encrypt(password); } public Timestamp getCreatedTimestamp() { createdTimestamp를 반환합니다; } public void setCreatedTimestamp(Timestamp createdTimestamp) { this.createdTimestamp = createdTimestamp; } public Timestamp getUpdatedTimestamp() { updatedTimestamp를 반환합니다; } public void setUpdatedTimestamp(Timestamp updatedTimestamp) { this.updatedTimestamp = updatedTimestamp; } public Integer getActive() { active를 반환합니다; } public void setActive(int active) { this.active = active; } public Boolean getDeleted() { deleted를 반환합니다; } public void setDeleted(Boolean deleted) { this.deleted = deleted; } public Integer getForcePassReset() { forcePassReset을 반환합니다; } public void setForcePassReset(Integer forcePassReset) { this.forcePassReset = forcePassReset; } public void setRole(EB\_Roles role) { this.role = role; } public EB\_Roles getRole() { this.role을 반환합니다; } public String getTokenSalt() { 토큰솔트를 반환합니다; } public void setTokenSalt(String tokenSalt) { this.tokenSalt = tokenSalt; } public String getExternalToken() { externalToken을 반환합니다; } public void setExternalToken(String externalToken) { this.externalToken = externalToken; } @Transient public GatewayUserJSON toUsersJSON() { GatewayUserJSON userJSON = new GatewayUserJSON(); RolesJSON roleJSON = 새로운 RolesJSON(); roleJSON.id = this.role.getId(); roleJSON.rolename = this.role.getRolename(); userJSON.id = id; userJSON.username = 사용자 이름; userJSON.password = Crypt.decrypt(password); userJSON.createdTimestamp = createdTimestamp.toString(); userJSON.updatedTimestamp = updatedTimestamp.toString(); userJSON.deleted = 삭제됨; userJSON.active = 활성; userJSON.forcePassReset = forcePassReset; userJSON.role = roleJSON; userJSON을 반환합니다; }}