You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
8.**No internal APIs in docs** - Only document public APIs; never reference internal or package-private classes and methods in user-facing documentation
52
52
9.**Test via public APIs** - Tests must exercise behavior through the same APIs an end user calls; never invoke internal implementations, package-private methods, or bypass the public surface directly
53
53
10.**Always review and extend tests** - Review existing unit and functional tests before making changes; every code change must include new or enhanced tests that cover the affected behavior
54
+
11.**Every code touch must update all tests for the changed class** - When a class is modified, find and update every test that covers it — unit, integration, and TCK. Do not leave any existing test out of sync with the new code.
55
+
12.**Clean violations before commit** - Before every automated commit, run `./gradlew clean test aggregateTestFailures --continue` from the root and ensure that `TEST_FAILURES.md` reports no issues and is removed.
54
56
55
57
## Available Skills
56
58
@@ -229,8 +231,9 @@ class MyService { }
229
231
1.**Fork & branch** from the target release branch (e.g., `7.0.x`)
230
232
2.**Run tests** before submitting: `./gradlew build --rerun-tasks`
4.**Squash commits** into a single meaningful commit message
233
-
5.**Reference issues** in PR description (e.g., "Fixes #1234")
234
+
4.**Clean style violations**: Before committing, run `./gradlew clean aggregateStyleViolations` from the root and ensure that `CHECKSTYLE_VIOLATIONS.md`, `CODENARC_VIOLATIONS.md`, and `PMD_VIOLATIONS.md` have no issues.
235
+
5.**Squash commits** into a single meaningful commit message
236
+
6.**Reference issues** in PR description (e.g., "Fixes #1234")
***BasicValueIdCreator**: Factory for creating identifier `Value` objects and their generators.
85
+
***BasicValueCreator**: Factory for creating identifier `Value` objects and their generators.
86
86
***VersionBinder**: Binds the version property used for optimistic locking.
87
87
***NaturalIdentifierBinder**: Binds properties marked as `naturalId`.
88
88
@@ -163,7 +163,7 @@ The `bindProperty` method in `GrailsPropertyBinder.java` has been successfully r
163
163
164
164
| Class | Status | Notes |
165
165
| :--- | :--- | :--- |
166
-
|`CollectionSecondPassBinder`| Migrated |Contains TODOs for unidirectional many-to-many. |
166
+
|`CollectionSecondPassBinder`| Migrated |Unidirectional many-to-many support implemented. |
167
167
|`GrailsSecondPass`| Migrated ||
168
168
|`ListSecondPass`| Migrated ||
169
169
|`ListSecondPassBinder`| Migrated ||
@@ -197,7 +197,7 @@ The `bindProperty` method in `GrailsPropertyBinder.java` has been successfully r
197
197
|`TableForManyCalculator`| Migrated ||
198
198
|`UniqueNameGenerator`| Migrated ||
199
199
|`BackticksRemover`| Migrated ||
200
-
|`BasicValueIdCreator`| Migrated ||
200
+
|`BasicValueCreator`| Migrated ||
201
201
202
202
## Utility Class Refactoring & Mock Compatibility
203
203
@@ -216,6 +216,9 @@ The `bindProperty` method in `GrailsPropertyBinder.java` has been successfully r
216
216
217
217
## Remaining Known Issues / TODOs
218
218
219
-
-`CollectionSecondPassBinder`: TODO support unidirectional many-to-many.
220
219
-`GrailsIncrementGenerator`: Reflection hacks for Hibernate 7 (scheduled for removal in Hibernate 8).
221
-
-**Multitenancy & CompositeId:** While many tests are passing, some complex scenarios in `MultiTenancyBidirectionalManyToManySpec` and `GlobalConstraintWithCompositeIdSpec` may still require attention or further validation in a full application context.
220
+
221
+
## Resolved Issues
222
+
223
+
-`CollectionSecondPassBinder`: Unidirectional many-to-many support implemented.
224
+
-**Multitenancy & CompositeId:**`MultiTenancyBidirectionalManyToManySpec` and `GlobalConstraintWithCompositeIdSpec` have been fixed and validated.
Copy file name to clipboardExpand all lines: grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateCompositeIdentity.groovy
0 commit comments