content: package org.orman.mapper;
  
  import org.orman.mapper.annotation.PrimaryKey;
  
  /**
   * Determines the way how compulsory {@link PrimaryKey}-annotated fields are threatened
   * before executing queries. They can be auto incremented by DBMS or native
   * generator of framework can be used or it can be manually set.
   * 
   * @author ahmet alp balkan <ahmetalpbalkan@gmail.com>
   */
  public enum IdGenerationPolicy {
  	/**
  	 * Provides a way to set Id such that developer should update
  	 * {@link PrimaryKey} field manually and makes sure that there is NO
  	 * collision on @ {@link PrimaryKey} field. The field can also be set
  	 * as "auto increment" on {@link PrimaryKey} annotation.
  	 */
  	MANUAL,
  
  	/**
  	 * Provides a way to set id such that both ORM framework and developer does
  	 * not worry about the {@link PrimaryKey}-autoIncrement field and ORM will defer Id generation to
  	 * the DBMS (can be AUTO INCREMENT etc.)
  	 * 
  	 * It is not guaranteed that id generated by DBMS is attached to the
  	 * instance after insert command. Do not avoid checks.
  	 * 
  	 * By this option, {@link PrimaryKey} field will not appear in created object-query
  	 * SQL statements.
  	 */
  	DEFER_TO_DBMS,
  
  	/**
  	 * Experimental genarator with NO GUARANTEE of collision. Provides values
  	 * for {@link String}, {@link Long} and {@link Integer} fields using system
  	 * time seed and hash code of the entire entity instance. Attaches generated
  	 * id to the instance after generation.
  	 */
  	ORMAN_ID_GENERATOR, ;
  }
  