From b7fe6c0d585b198a3a1d214e788daf69e25bd98c Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Mon, 18 Jul 2011 14:41:56 -0500 Subject: [PATCH] HHH-6398 - Create @DynamicUpdate annotation --- .../hibernate/annotations/DynamicUpdate.java | 44 +++++++++++++++++++ .../org/hibernate/annotations/Entity.java | 5 ++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 hibernate-core/src/main/java/org/hibernate/annotations/DynamicUpdate.java diff --git a/hibernate-core/src/main/java/org/hibernate/annotations/DynamicUpdate.java b/hibernate-core/src/main/java/org/hibernate/annotations/DynamicUpdate.java new file mode 100644 index 0000000000..1d1097b88d --- /dev/null +++ b/hibernate-core/src/main/java/org/hibernate/annotations/DynamicUpdate.java @@ -0,0 +1,44 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2011, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.annotations; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * For updating, should this entity use dynamic sql generation where only changed columns get referenced in the + * prepared sql statement? + *

+ * Note, for re-attachment of detached entities this is not possible without select-for-update being enabled. + * + * @author Steve Ebersole + */ +@Target( TYPE ) +@Retention( RUNTIME ) +public @interface DynamicUpdate { + boolean value() default true; +} diff --git a/hibernate-core/src/main/java/org/hibernate/annotations/Entity.java b/hibernate-core/src/main/java/org/hibernate/annotations/Entity.java index 1a4a4874d1..a3ee8eecda 100644 --- a/hibernate-core/src/main/java/org/hibernate/annotations/Entity.java +++ b/hibernate-core/src/main/java/org/hibernate/annotations/Entity.java @@ -48,7 +48,10 @@ public @interface Entity { * @deprecated use {@link DynamicInsert} instead */ boolean dynamicInsert() default false; - /** Needed column only in SQL on update */ + /** + * Needed column only in SQL on update + * @deprecated Use {@link DynamicUpdate} instead + */ boolean dynamicUpdate() default false; /** Do a select to retrieve the entity before any potential update */ boolean selectBeforeUpdate() default false;