001package com.avaje.ebean.annotation;
002
003import java.lang.annotation.ElementType;
004import java.lang.annotation.Retention;
005import java.lang.annotation.RetentionPolicy;
006import java.lang.annotation.Target;
007
008/**
009 * Marks an entity bean as being included in the change logging.
010 */
011@Target({ElementType.TYPE})
012@Retention(RetentionPolicy.RUNTIME)
013public @interface ChangeLog {
014
015  /**
016   * Specify if inserts should be explicitly Included or Excluded.
017   * <p>
018   * If not defined explicitly then the server default behaviour defined
019   * on ServerConfig is used.
020   * </p>
021   */
022  ChangeLogInsertMode inserts() default ChangeLogInsertMode.DEFAULT;
023
024  /**
025   * When specified only include update requests that have at least one
026   * of the given properties as a dirty property.
027   * <p>
028   * This provides a way to filter requests to include in the change log such that
029   * only updates that include at least one of the given properties is included
030   * in the change log.
031   * </p>
032   */
033  String[] updatesThatInclude() default {};
034}