@AuditOverrides({@AuditOverride(forClass = NotAuditedBaseEntity.class, isAudited = true)}) public class ClassOverrideAuditedEntity extends NotAuditedBaseEntity { @Audited
public void addAuditingOverrides(AuditOverrides annotationOverrides) { if ( annotationOverrides != null ) { for ( AuditOverride annotation : annotationOverrides.value() ) { addAuditingOverride( annotation ); } } }
@AuditOverrides({@AuditOverride(forClass = AuditedBaseEntity.class, isAudited = false)}) public class ClassOverrideNotAuditedEntity extends AuditedBaseEntity { @Audited
/** * @param clazz Source class. * * @return List of @AuditOverride annotations applied at class level. */ private List<AuditOverride> computeAuditOverrides(XClass clazz) { final AuditOverrides auditOverrides = clazz.getAnnotation( AuditOverrides.class ); final AuditOverride auditOverride = clazz.getAnnotation( AuditOverride.class ); if ( auditOverrides == null && auditOverride != null ) { return Arrays.asList( auditOverride ); } else if ( auditOverrides != null && auditOverride == null ) { return Arrays.asList( auditOverrides.value() ); } else if ( auditOverrides != null && auditOverride != null ) { throw new MappingException( "@AuditOverrides annotation should encapsulate all @AuditOverride declarations. " + "Please revise Envers annotations applied to class " + clazz.getName() + "." ); } return Collections.emptyList(); }
@AuditOverrides({@AuditOverride(forClass = NotAuditedBaseEntity.class, name = "str1", isAudited = true)}) public class AuditedSpecialEntity extends NotAuditedBaseEntity { @Audited
public void addAuditingOverrides(AuditOverrides annotationOverrides) { if ( annotationOverrides != null ) { for ( AuditOverride annotation : annotationOverrides.value() ) { addAuditingOverride( annotation ); } } }
@Entity(name = "OAPAE") @Audited(auditParents = NonAuditedSuperClass.class) @AuditOverrides({ @AuditOverride( forClass = NonAuditedSuperClass.class,
/** * @param clazz Source class. * * @return List of @AuditOverride annotations applied at class level. */ private List<AuditOverride> computeAuditOverrides(XClass clazz) { final AuditOverrides auditOverrides = clazz.getAnnotation( AuditOverrides.class ); final AuditOverride auditOverride = clazz.getAnnotation( AuditOverride.class ); if ( auditOverrides == null && auditOverride != null ) { return Arrays.asList( auditOverride ); } else if ( auditOverrides != null && auditOverride == null ) { return Arrays.asList( auditOverrides.value() ); } else if ( auditOverrides != null && auditOverride != null ) { throw new MappingException( "@AuditOverrides annotation should encapsulate all @AuditOverride declarations. " + "Please revise Envers annotations applied to class " + clazz.getName() + "." ); } return Collections.emptyList(); }
@AuditOverrides({ @AuditOverride(forClass = BaseEntity.class, name = "str1", isAudited = true), @AuditOverride(forClass = ExtendedBaseEntity.class, name = "number2", isAudited = true)
@Entity(name = "OOAE") @Audited @AuditOverrides({ @AuditOverride( forClass = NonAuditedSuperClass.class, name = "superStringList", auditJoinTable = @AuditJoinTable(name = "OOAE_StringList") ) }) public static class OtherOverrideAuditedEntity extends NonAuditedSuperClass { private String value; @NotAudited private String notAuditedValue; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getNotAuditedValue() { return notAuditedValue; } public void setNotAuditedValue(String notAuditedValue) { this.notAuditedValue = notAuditedValue; } }
@AuditOverrides({ @AuditOverride(forClass = BaseEntity.class, name = "str1", isAudited = false), @AuditOverride(forClass = BaseEntity.class, name = "number1", isAudited = true)
@AuditOverrides({ @AuditOverride(forClass = AuditedBaseEntity.class, isAudited = false), @AuditOverride(forClass = AuditedBaseEntity.class, name = "number1", isAudited = true)
}) @org.hibernate.envers.Audited @AuditOverrides(value = { @AuditOverride(name = "range", auditJoinTable = @org.hibernate.envers.AuditJoinTable(name = "JOIN_TABLE_COMPONENT_2_AUD", }) @org.hibernate.envers.Audited @AuditOverrides(value = {@AuditOverride(name = "str2", isAudited = false)}) private Component1 component3;
@AuditOverrides({ @AuditOverride(forClass = BaseEntity.class, name = "str1", isAudited = false), @AuditOverride(forClass = BaseEntity.class, name = "number1", isAudited = true)
@Getter @Access(AccessType.FIELD) @JsonInclude(JsonInclude.Include.NON_EMPTY) @MappedSuperclass @AuditOverrides({@AuditOverride(forClass = BaseAttachmentFile.class)}) public abstract class BaseAttachmentFile extends BaseUuidEntity { }
/** * 框架提供一个基础的UUID方式的实体对象定义参考 * 具体可根据项目考虑选用其他主键如自增、序列等方式,只需修改相关泛型参数类型和主键定义注解即可 * 各属性定义可先简单定义MetaData注解即可,具体细节的控制属性含义可查看具体代码注释说明 */ @Getter @Access(AccessType.FIELD) @JsonInclude(Include.NON_EMPTY) @MappedSuperclass @AuditOverrides({@AuditOverride(forClass = BaseUuidEntity.class)}) public abstract class BaseUuidEntity extends BaseEntity<String> { @Id @Column(length = 40) @GeneratedValue(generator = "hibernate-uuid") //HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values; consider using org.hibernate.id.UUIDGenerator instead @GenericGenerator(name = "hibernate-uuid", strategy = "org.hibernate.id.UUIDGenerator") @JsonProperty private String id; public void setId(String id) { //容错处理id以空字符提交参数时修改为null避免hibernate主键无效修改 if (StringUtils.isBlank(id)) { this.id = null; } else { this.id = id; } } }
/** * 框架提供一个基础的Native方式的实体对象定义参考 * 具体可根据项目考虑选用其他主键如自增、序列等方式,只需修改相关泛型参数类型和主键定义注解即可 * 各属性定义可先简单定义MetaData注解即可,具体细节的控制属性含义可查看具体代码注释说明 */ @Getter @Setter @Access(AccessType.FIELD) @JsonInclude(Include.NON_EMPTY) @MappedSuperclass @AuditOverrides({@AuditOverride(forClass = BaseNativeEntity.class)}) public abstract class BaseNativeEntity extends BaseEntity<Long> { private static final long serialVersionUID = 693468696296687126L; @MetaData("主键") @Id @GeneratedValue(generator = "idGenerator") @GenericGenerator(name = "idGenerator", strategy = "native") @JsonProperty @JsonView(JsonViews.Public.class) private Long id; }
@MappedSuperclass @EntityListeners({SaveUpdateAuditListener.class}) @AuditOverrides({@AuditOverride(forClass = BaseEntity.class)}) public abstract class BaseEntity<ID extends Serializable> extends AbstractPersistableEntity<ID> implements DefaultAuditable {
@JsonInclude(Include.NON_EMPTY) @MappedSuperclass @AuditOverrides({@AuditOverride(forClass = BaseNativeNestedSetEntity.class)}) public abstract class BaseNativeNestedSetEntity<T extends BaseNativeNestedSetEntity> extends BaseNativeEntity {