package org.exitsoft.orm.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.exitsoft.orm.core.PropertyType;
/**
* Hibernate状态删除,如果在orm实体配置该注解,将不会物理删除数据,会根据该配置来进行对orm实体的update操作
*
*
* <pre>
* @Entity
* @Table(name="tb_user")
* @StateDelete(propertyName = "state",type = CategoryType.S,value="2")
* public class User{
* private String username;
* private String state;
*
* public User() {
* }
* getter/setter.....
* }
* User user = dao.get(1);
* dao.delete(user);
* ----------------------------------
* sql:update tb_user set state = ? where id = ?
* </pre>
*
* @author vincent
*
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface StateDelete {
/**
* 属性名称
*
* @return String
*/
public String propertyName();
/**
* 要改变的值
*
* @return String
*/
public String value();
/**
* 改变值的类型
*
* @return {@link PropertyType}
*/
public PropertyType type() default PropertyType.I;
}