Coding the entities

Version 5, last updated by skpatel20 at 2013-04-27

Your database entities need to implement BinEntity interface. For convenience, you might like to have an AbstractEntity class from which your entities inherit. See an example below, which uses Spring-Data-Mongo.

package org.metaframe.spa.data;

import java.util.Date;
import org.bson.types.ObjectId;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.metaframe.entitybin.BinEntity;
import org.springframework.data.annotation.Id;

/**  * Base class for all entities  *   * @author sanjay  */ public abstract class AbstractEntity implements BinEntity<String> { /** * Primary key */ @Id protected String id; /** * Created at */ protected Date createdAt = new Date(); /** * Version for optimistic locking */ protected int version = 1; public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } public String getId() { return id; } public void setId(String id) { this.id = id; } @JsonIgnore public ObjectId getOid() { return ObjectId.massageToObjectId(id); } public Date getCreatedAt() { return createdAt; } public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } }
Below is an example class inheriting from AbstractEntity.
package org.metaframe.spa.auth;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.metaframe.entitybin.TrackHistory;
import org.metaframe.spa.data.AbstractEntity;
import org.metaframe.spa.dto.SensitiveData;
import org.metaframe.spa.dto.UserData;
import org.metaframe.spa.forms.UserForm;
import org.metaframe.spa.util.SpaUtil;
import org.springframework.data.annotation.TypeAlias;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

/**
 * User entity. Needs to be serializable as Spring serializes it
 * 
 * @author sanjay
 */
@Document
@TypeAlias("user")
public class User extends AbstractEntity implements Serializable {
	
        .
        .
        .
	
	@TrackHistory
	@Indexed(unique=true)
	@NotNull
	@Size(min=1, max=EMAIL_MAX_SIZE)
	@Pattern(regexp = ONLY_EMAIL_REGEX)
	private String email;
	
        .
        .
        .
	
	@TrackHistory
	@NotNull
	@Size(min=NAME_MIN_SIZE, max=NAME_MAX_SIZE)
	private String name;
	
	@Size(max=ABOUT_MAX_SIZE)
	private String about;
        .
        .
        .
	
}


Comments are disabled for this space. In order to enable comments, Messages tool must be added to project.

You can add Messages tool from Tools section on the Admin tab.