Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ gebVersion=2.3
geckodriverVersion=0.23.0
gormVersion=7.2.0
grailsGradlePluginVersion=5.1.3
groovyVersion=3.0.7
groovyVersion=3.0.10
h2Version=1.4.200
hibernate5Version=5.6.5.Final
hibernateValidatorVersion=6.2.3.Final
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class HibernateGormInstanceApi<D> extends AbstractHibernateGormInstanceApi<D> {
* @return true if the field is dirty
*/

@CompileDynamic
boolean isDirty(D instance, String fieldName) {
SessionImplementor session = (SessionImplementor)sessionFactory.currentSession
def entry = findEntityEntry(instance, session)
Expand All @@ -58,7 +59,7 @@ class HibernateGormInstanceApi<D> extends AbstractHibernateGormInstanceApi<D> {

EntityPersister persister = entry.persister
Object[] values = persister.getPropertyValues(instance)
int[] dirtyProperties = findDirty(persister, values, entry, instance, session)
def dirtyProperties = findDirty(persister, values, entry, instance, session)
if(dirtyProperties == null) {
return false
}
Expand All @@ -69,7 +70,7 @@ class HibernateGormInstanceApi<D> extends AbstractHibernateGormInstanceApi<D> {
}

@CompileDynamic // required for Hibernate 5.2 compatibility
private int[] findDirty(EntityPersister persister, Object[] values, EntityEntry entry, D instance, SessionImplementor session) {
private def findDirty(EntityPersister persister, Object[] values, EntityEntry entry, D instance, SessionImplementor session) {
persister.findDirty(values, entry.loadedState, instance, session)
}

Expand All @@ -79,6 +80,7 @@ class HibernateGormInstanceApi<D> extends AbstractHibernateGormInstanceApi<D> {
* @param instance The instance
* @return true if it is dirty
*/
@CompileDynamic
boolean isDirty(D instance) {
SessionImplementor session = (SessionImplementor)sessionFactory.currentSession
def entry = findEntityEntry(instance, session)
Expand All @@ -87,7 +89,7 @@ class HibernateGormInstanceApi<D> extends AbstractHibernateGormInstanceApi<D> {
}
EntityPersister persister = entry.persister
Object[] currentState = persister.getPropertyValues(instance)
int[] dirtyPropertyIndexes = findDirty(persister, currentState, entry, instance, session)
def dirtyPropertyIndexes = findDirty(persister, currentState, entry, instance, session)
return dirtyPropertyIndexes != null
}

Expand All @@ -97,6 +99,8 @@ class HibernateGormInstanceApi<D> extends AbstractHibernateGormInstanceApi<D> {
* @param instance The instance
* @return A list of property names that are dirty
*/

@CompileDynamic
List getDirtyPropertyNames(D instance) {
SessionImplementor session = (SessionImplementor)sessionFactory.currentSession
def entry = findEntityEntry(instance, session)
Expand All @@ -107,7 +111,7 @@ class HibernateGormInstanceApi<D> extends AbstractHibernateGormInstanceApi<D> {
EntityPersister persister = entry.persister
Object[] currentState = persister.getPropertyValues(instance)
int[] dirtyPropertyIndexes = findDirty(persister, currentState, entry, instance, session)
List names = []
List<String> names = []
def entityProperties = persister.getEntityMetamodel().getProperties()
for (index in dirtyPropertyIndexes) {
names.add entityProperties[index].name
Expand Down