package org.nutz.dao.entity.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 标识当前字段为一个 ID。 这字段的必须为整型(int,long,short,byte),否则 会在解析 POJO 时主动抛出异常。 * <p> * 在 Dao 接口调用 xxxx(Class<?>, long) 形式的函数时,第二个参数对应的就是这个字段,比如: <br> * fetch(Class<?>,long) * * <h4>自动增长 -- 默认模式</h4> * <p> * 默认的来说,这个字段在数据库中必须是自动增长的。当通过 Dao 接口执行 insert 操作 的时候,这个字段会被 自动填充上增长后的值。 * <p> * 在自增长模式下, Nutz.Dao 在执行插入的时候,会忽略这个字段。如果你想在插入后获取数据库中的值,请 使用 '@Next' 注解 * * <h4>手动模式</h4> * 有些时候,你希望这个 ID 的值是由你的程序来控制,你可以将 auto 属性设为 false * * <pre> * @Id(auto = false) * private int id; * </pre> * * 这样,插入的时候,Nutz.Dao 就不会忽略这个字段了。 * * @author zozoh(zozohtnt@gmail.com) * * @see org.nutz.dao.entity.annotation.Next */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD, ElementType.METHOD}) @Documented public @interface Id { /** * true : auto increasement */ boolean auto() default true; }