Apache Cayenne Release Notes
============================

For the latest information visit project web site:
https://cayenne.apache.org/

To browse individual bug reports check out project issue tracker:
https://issues.apache.org/jira/browse/CAY

----------------------------------
Release: 4.2.3
Date: November 13, 2025
----------------------------------
Changes/New Features:

CAY-2884 Upgrade gradle to 8.13
CAY-2893 Update velocity-engine-core dependency
CAY-2897 Add no-op default implementations to the GraphChangeHandler interface
CAY-2905 Upgrade Gradle to 8.14

Bug Fixes:

CAY-2836 ObjectSelect.selectCount() throws if a query contains ordering
CAY-2863 DbEntity qualifiers are no longer applied to JOIN conditions
CAY-2883 License and notice templates are not processed by the Gradle build
CAY-2885 Modeler: DbImport fails to load DB schema view
CAY-2887 Expressions: Incorrect serialization to string of numeric literals
CAY-2895 Incorrect Lazy Pagination Comparison for BigInteger PK
CAY-2896 Inserting two identical objects into two datamaps stores both objects in the last used datamap
CAY-2898 Crypto: NPE in a ColumnQuery
CAY-2899 CommitLog: missing lifecycle-induced changes in `excludeFromTransaction` mode
CAY-2900 Meaningful generated PKs could lead to the ClassCastException
CAY-2901 Loosing comments on the existing ObjAttribute after DB import
CAY-2904 Disjoint prefetch returns incorrect data

----------------------------------
Release: 4.2.2
Date: March 14, 2025
----------------------------------
Changes/New Features:

CAY-2867 Tweak GraphBasedDbRowOpSorter logic to allow related updates
CAY-2872 CayenneModeler "Documentation" link is broken
CAY-2873 Change Orderings.orderedList() to accept a Collection rather than a List

Bug Fixes:

CAY-2866 DefaultDataDomainFlushAction breaks on circular relationship update
CAY-2868 Regression: DefaultDbRowOpSorter shouldn't sort update operations
CAY-2871 QualifierTranslator breaks on a relationship with a compound FK
CAY-2876 Memory leak in the ObjectStore
CAY-2879 Negative number for non parameterized ObjectSelect query not processed correctly

----------------------------------
Release: 4.2.1
Date: June 20, 2024
----------------------------------
Changes/New Features:

CAY-2849 Switch documentation to `hugo-asciidoctorj-extension`
CAY-2852 Update velocity-engine-core dependency
CAY-2856 Upgrade Gradle to 8.8
CAY-2857 Java 22 support

Bug Fixes:

CAY-2806 Incorrect processing of unicode escape syntax in JSON
CAY-2809 Cayenne Expression grammar doesn't allow custom function as an argument for string functions
CAY-2810 Can't use custom operator expression with aggregate functions
CAY-2813 Regression: Constants.CI_PROPERTY flag is no longer working for MySQL
CAY-2815 Incorrect translation of aliased expression
CAY-2838 Vertical Inheritance: Problem setting db attribute to null via flattened path
CAY-2840 Vertical Inheritance: Missing subclass attributes with joint prefetch
CAY-2841 Multi column ColumnSelect with SHARED_CACHE fails after 1st select
CAY-2844 Joint prefetch doesn't use ObjEntity qualifier
CAY-2848 Vertical Inheritance: Updating one-to-many with inverse nullifies other columns
CAY-2850 Query using Clob comparison with empty String fails
CAY-2851 Replace Existing OneToOne From New Object
CAY-2853 Incorrect deletion of entities from flattened attributes

----------------------------------
Release: 4.2
Date: May 16, 2023
----------------------------------
Changes/New Features:

CAY-2802 Upgrade Gradle to 7.6.1
CAY-2805 Stop calling exp parser internally

Bug Fixes:

CAY-2552 ColumnQuery with flattened attributes bug
CAY-2783 DbEntity to ObjEntity synchronization should check mandatory flag for primitive java types
CAY-2789 MalformedJsonException thrown when reading manually edited JSON data in Postgres
CAY-2790 EOModel import: NPE importing EOFetchSpecification
CAY-2792 Fix Insertion Order For Reflexive DataObjects
CAY-2794 Fix Incorrect JavaType for Vertical-Inheritance Attributes
CAY-2796 Cayenne custom json formatter produces invalid json
CAY-2800 Modeler saves map.xml files with schema ordering error
CAY-2801 Incorrect equals() implementation in IdGenerationMarker could cause data missing in the commit

----------------------------------
Release: 4.2.RC2
Date: December 1, 2022
----------------------------------
Changes/New Features:

CAY-2741 Cleanup TransactionDescriptor and deprecate DefaultTransactionDescriptor
CAY-2743 Deprecate ROP
CAY-2749 Deprecate object clustering transports
CAY-2750 Deprecate web module
CAY-2775 Change Objectstyle maven repository URL
CAY-2776 Upgrade Gradle to 7.6

Bug Fixes:

CAY-2732 Exception when creating ObjEntity from a DbEntity
CAY-2755 Modeler: Entities are not sorted by name in the class generation view
CAY-2762 Modeler: Difference in toolbars colors on OSX
CAY-2763 Split expressions do not work with flattened relationships
CAY-2764 Split expressions do not work with DB relationships
CAY-2765 dbimport: check excluded catalogs and schemas for the SQLServer
CAY-2769 Modeler: 'rootPath' attribute is missing
CAY-2777 Reverse relationship is not set with single table inheritance
CAY-2782 Modeler: save button becomes active on DataMap comment field focus

----------------------------------
Release: 4.2.RC1
Date: June 3, 2022
----------------------------------
Changes/New Features:

CAY-2711 JDK 17 compatibility
CAY-2728 Add ExtendedType to generate user-friendly exceptions for internally used values

Bug Fixes:

CAY-2630 Prefetched relationships not preserving pending changes
CAY-2697 Read-only cgen template creates mutator methods for to-many relationships
CAY-2724 Duplicating relationship after editing its name
CAY-2727 Modeler: cgen destDir Unix platform path separator
CAY-2729 Unable to use custom templates from a folder at upper level then datamap
CAY-2730 Duplicating lines in a cgen config saved to datamap.xml
CAY-2731 Exception when setting a CLOB on H2 v2.0.202
CAY-2733 Modeler can't use custom templates set in a datamap
CAY-2734 Improve support for the DECIMAL type
CAY-2736 Can't use function names as a path in a string-based expression

----------------------------------
Release: 4.2.B1
Date: November 25, 2021
----------------------------------
Changes/New Features:

CAY-2399 Convert string values to Enum in qualifiers
CAY-2637 Allow forcing a custom Connection for a transaction
CAY-2718 Use testcontainers for the integration tests

Bug Fixes:

CAY-2092 Exception for query that uses pagination and sorting on to-many
CAY-2694 Precision issues with reverse / forward engineering of time types on MySQL
CAY-2699 Modeler: dbimport schema view not working on SQLite
CAY-2702 Modeler: Callbacks table has too small default width
CAY-2703 Modeler: incorrect active tab style on the MacOS version
CAY-2704 Vertical inheritance with Embeddedables looses ObjAttribute information
CAY-2705 Performance of callback annotation processing
CAY-2706 Modeler: object attribute dialog doesn't properly initialized for the embeddable type
CAY-2707 Modeler: code generation is broken in the DataDomain tab
CAY-2708 Gradle build plugin fails on Java 16
CAY-2709 Modeler: Cgen fails to generate code for a new unsaved project with all settings set to default
CAY-2710 Modeler: modeler throws IllegalArgumentsException when root and rel paths have different root
CAY-2712 Shouldn't run batch inserts with generated keys if there is reflexive dependency
CAY-2713 ConcurrentModificationException when Inserting
CAY-2714 Offset value is not copied to column select metadata
CAY-2716 Wrong operator for the bitwise NOT
CAY-2720 ConcurrentModificationException in the TypeAwareSQLTreeProcessor
CAY-2721 Platform builds of CayenneModeler don't work with Java 17
CAY-2723 Phantom update of a to-dependent-pk relationship

----------------------------------
Release: 4.2.M3
Date: March 13, 2021
----------------------------------
Changes/New Features:

CAY-2587 SQLServer Limit Offset translation
CAY-2677 Custom Class Generation Templates for Embeddables and DataMaps
CAY-2689 ServerRuntime API: missing some variants of the performInTransaction() method
CAY-2692 Add entity lifecycle callbacks via annotated methods

Bug Fixes:

CAY-2658 DataChannelMetaData is null during cgen execution
CAY-2661 NPE on DB Import screen
CAY-2678 Inheritance warnings caused by unnecessary MappingCache creations during initialization
CAY-2683 Don't use DISTINCT for joins on to-one related tables
CAY-2685 JsonType should use the actual JDBC type, not OTHER
CAY-2686 SQL translator incorrectly quotes fully qualified tables' names
CAY-2687 Modeler Migrate Repeatedly Asks to Set Column Type for MySQL
CAY-2690 dbimport skips length changes for BINARY and VARBINARY columns
CAY-2691 MySQL driver 8.0.x stores LocalDateTime differently than 5.1.x
CAY-2693 Abstract subentities do not have rows materialized correctly
CAY-2694 Precision issues with reverse / forward engineering of time types on MySQL
CAY-2695 Reverse engineering on SQLite fails due to feature not being supported
CAY-2698 EventSubject.getSubject() is not thread safe

----------------------------------
Release: 4.2.M2
Date: October 6, 2020
----------------------------------
Changes/New Features:

CAY-2338 Support comments in cgen and default templates
CAY-2656 Modeler: option to download required jars directly from maven central
CAY-2657 SelectQueryDescriptor should use ObjectSelect
CAY-2659 Use new SQLBuilder utility to generate SQL for batch queries
CAY-2662 Use custom interface for SQL tree processor instead of a Function<Node, Node>
CAY-2663 Support for custom SQL operators
CAY-2664 Add methods to EntityProperty to allow direct usage of primary key values
CAY-2665 Support for widespread SQL types that falls into Jdbc type OTHER
CAY-2668 Experimental graph-based db operations sorter
CAY-2670 CommitLog does not include FKs for deleted objects with one-way relationships
CAY-2673 Support ordering by aggregate functions
CAY-2674 Support in-memory evaluation of aggregate functions

Bug Fixes:

CAY-2591 Modeler: project becomes dirty after click on dbImport or cgen tab
CAY-2671 QualifierTranslator fails to translate expressions with compound PKs/FKs
CAY-2675 A one-to-one relationship with meaningful PK can be nullified in the nested context
CAY-2676 Degradation: Custom class generation templates are not working anymore
CAY-2679 Unstable ordering of relationships in the .map.xml file
CAY-2681 Modeler: All selected checkboxes cause project to become dirty at initialization
CAY-2682 Vertical Inheritance: DB-generated PK doesn't propagate from the root to children

----------------------------------
Release: 4.2.M1
Date: April 7, 2020
----------------------------------
Changes/New Features:

CAY-2465 New SelectTranslator implementation
CAY-2466 New internal API to build SQL
CAY-2467 New type-aware Property API
CAY-2468 Support subqueries in Expression API
CAY-2507 Property API to use path aliases
CAY-2508 Create api to add aliases in expressions
CAY-2510 Create builder to load custom modules into plugins and modeler
CAY-2511 Contribute custom properties for attributes
CAY-2512 Support for custom functions in Expression API and Property API
CAY-2514 Set SERVER_CONTEXTS_SYNC_PROPERTY default value to false
CAY-2517 EventManager: optimization of adding listeners
CAY-2518 Add method to append having qualifier expression to ObjectSelect
CAY-2520 Split ObjectId into several specialized variants
CAY-2522 Make ObjectSelect a direct query
CAY-2523 Deprecate SelectQuery
CAY-2525 Deprecate OpenBase adapter
CAY-2527 API to map Object[] result to POJO
CAY-2539 Import procedures with the help of MergerToken
CAY-2540 Modeler: redesign dbRelationship editor dialog
CAY-2542 Modeler: redesign ObjRelationship editor dialog
CAY-2543 Move ResultSetMapping generation from metadata to translator
CAY-2549 Modeler: Redesign ObjAttribute editor dialog
CAY-2551 Create extended type for abstract Number class
CAY-2555 Use explicit ArcId in GraphChangeHandler methods
CAY-2557 Add java.time.Duration and java.time.Period to supported types
CAY-2562 Make ROPServerModule autoloaded
CAY-2563 Deprecate old scalarQuery methods in SQLSelect
CAY-2568 Class Generation: Superclass Package setting persistence
CAY-2569 Custom 'Naming Strategy' in Cayenne Modeler
CAY-2570 Use MySQL adapter for latest versions of MariaDB
CAY-2571 DataDomainFlushAction redesign
CAY-2579 Review and possibly relax usage of readonly flag of ObjRelationship
CAY-2585 Rename scalarQuery and params methods in SQLSelect
CAY-2590 Add method to set query timeout to queries
CAY-2592 Modeler: make all datamaps selected in global cgen tab
CAY-2593 Add tableTypes field to dbImport config in dataMap
CAY-2602 Remove RTRIM of char columns in Sybase
CAY-2604 Specialization of property API for PK
CAY-2610 Align methods in ObjectSelect and SQLSelect
CAY-2611 Exclude system catalogs and schemas when run dbImport without config
CAY-2612 Modeler: add lazy-loading to dbImport tab
CAY-2645 Modeler: DbImport tree highlight improvement
CAY-2650 Support using generated primary keys along with batch inserts
CAY-2651 Support multiple IDs in the SelectById query

Bug Fixes:

CAY-2019 Optimistic locking always fails on CRYPTO columns
CAY-2332 Property API: unable to use eq() and in() methods for toMany relationships
CAY-2417 Modeler: wrong title in attribute context menu
CAY-2506 Java class generated for Embeddable object is not serializable
CAY-2509 Result of resolving lazily faulted relationships can be out-of-date
CAY-2530 Modeler: DB Import and Class Generation from Project is performed for removed datamaps
CAY-2531 Modeler: Importing same schema after Import Revert clears all entities in datamap
CAY-2533 Modeler: Exception on validating ObjRelationship without db path
CAY-2535 Modeler: Impossible to import stored procedure apart from db tables
CAY-2537 Modeler: Schema Generation Complete popup window is hidden
CAY-2538 Modeler: dbImport configuration unclear behavior
CAY-2541 Performing query with expression with ObjectId throws NPE in some cases
CAY-2544 Possible name clash of ivar and property name in generated class
CAY-2547 CayenneDataObject serialization issue
CAY-2553 Wrong disjoint prefetch query qualifier
CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship
CAY-2561 Modeler: cgen type combobox doesn't set templates
CAY-2572 Queries are not sorted by name in data map XML
CAY-2573 DI field injection is triggered when creating sql Driver
CAY-2575 Select translator: Wrong translation of IN Expression
CAY-2576 Ant cgen task is broken
CAY-2577 Between property with extended type failure
CAY-2578 Wrong bindings in select of related entity by compound FK
CAY-2580 Cgen: Can't use custom templates for client mode
CAY-2582 Double insert of manyToMany relationship mapped to Set
CAY-2584 Crypto: can't use ColumnSelect with encrypted columns
CAY-2588 IdRowReader: ArrayIndexOutOfBoundsException
CAY-2591 Modeler: project becomes dirty after click on dbImport or cgen tab
CAY-2594 DbImport: AutoAdapter resolving inside an import operation hangs up the op on Hana DB
CAY-2595 ObjAttributes are not sorted in alphabetical ordering on save
CAY-2596 DbImport xml config changes after dbImport plugin task execution
CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog support
CAY-2601 Modeler DbImport: result dialog issues
CAY-2603 NPE reloading project in the model
CAY-2605 Modeler: Unable to save - java.nio.file.InvalidPathException
CAY-2606 Can't resolve obj path with embeddable component
CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
CAY-2609 Modeler: can't close dbImport result dialog window
CAY-2616 Modeler: Wrong handling of path with spaces
CAY-2618 Unstable property ordering in generated classes
CAY-2619 "to-dep PK" related dbimport delta confuses the Modeler
CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
CAY-2627 Modeler: ObjRelationship creation dialog ignores delete rule
CAY-2628 dbimport: unable to add several relationships to existing entity
CAY-2631 Can no longer use "byte[]" as root of scalar SQLSelect
CAY-2632 Modeler: issue saving cgen path for maven project
CAY-2633 Modeler: attribute sorting logic in cgen can corrupt model
CAY-2634 Minor inconsistencies in Modeler "DB Import"
CAY-2635 Lambda expressions break ROP serialization
CAY-2646 Wrong target path selection logic in cgen config
CAY-2647 Modeler: project upgrade from 4.0.B2 to 4.1.RC2 failure
CAY-2648 Whitespace symbols in JDBC Driver and DB URL lines lead to incorrect driver loading
CAY-2653 No methods for queries with qualifier parameters generated
CAY-2654 Exception in dbimport when relationships should be imported, but no explicit configuration exists
CAY-2655 AutoAdapter missing supportsGeneratedKeysForBatchInserts() method

