Skip to content
This repository was archived by the owner on Feb 23, 2026. It is now read-only.

🚀 Aether Generators v1.1.1 – Stable relation handling for MVC builders

Choose a tag to compare

@Splatcrafter Splatcrafter released this 01 Sep 19:48
· 6 commits to main since this release

🚀 Aether Generators v1.1.1 – Stable relation handling for MVC builders

This patch release focuses on fixing relation persistence in the MVC builders and tightening the generated runtime helpers. It is a drop‑in update over 1.1.0.

✨ Highlights in 1.1.1

  • âś… Fix (MVC builders): Prevents TransientObjectException when persisting entities that reference transient related objects (to-one and to-many). Builders now pre‑persist related objects in persistent() mode and replace associations with managed instances.
  • âś… Cycle safety: Identity-based cycle guard to avoid infinite traversal in cyclic graphs (e.g., mutual supervision).
  • âś… Deterministic traversal: Bounded depth for relation pre‑persistence to keep operations predictable.
  • âś… Robust ID wiring: writeId(..) prefers setId(..) if available and otherwise falls back to the id field; getFieldValue(..) is getter-first, then reflective.
  • âś… Reflection safety: Hierarchical field lookup (walks superclasses) and no hard failures for inaccessible fields.

📦 Installation

Tip

Use the BOM and just bump to 1.1.1. No additional repositories required.

Maven (BOM + modules)

<!-- pom.xml -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>de.splatgames.aether</groupId>
            <artifactId>aether-generators-bom</artifactId>
            <version>1.1.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <!-- Example: DTO annotations (keep as needed for your setup) -->
    <dependency>
        <groupId>de.splatgames.aether</groupId>
        <artifactId>aether-generators-dto-annotations</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <annotationProcessorPaths>
                    <!-- Example: DTO processor. Include other processors you use. -->
                    <path>
                        <groupId>de.splatgames.aether</groupId>
                        <artifactId>aether-generators-dto-processor</artifactId>
                        <version>1.1.1</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

Gradle (BOM + modules)

dependencies {
    implementation platform('de.splatgames.aether:aether-generators-bom:1.1.1')

    // Example: DTO annotations & processor. Add/adjust modules as in your project.
    implementation 'de.splatgames.aether:aether-generators-dto-annotations'
    annotationProcessor 'de.splatgames.aether:aether-generators-dto-processor:1.1.1'
}

🛠️ Upgrade Notes

  • No breaking changes.
  • If you use the MVC builders in persistent() mode, this update removes the need for manual pre‑persisting of related entities.
  • Just bump your BOM/processor version to 1.1.1.

📝 Changelog

Bug Fixes

  • Fixed org.hibernate.TransientObjectException by ensuring related entities are pre‑persisted and replaced with managed instances before saving the root entity (to‑one and to‑many).
  • Resolved edge cases in reflection utilities: getter‑first reads, superclass field lookup, and safer ID assignment (setId(..) → id field fallback).

Enhancements

  • Added identity-based cycle guard and bounded traversal depth for predictable relation handling.
  • Minor cleanup and internal docs around relation traversal and persistence adapter integration.

📜 License

MIT License. See LICENSE for details and NOTICE for third‑party attributions.