Cayenne 5.0 Release Candidate 1 Released
Nov 04, 2026
Apache Cayenne development team is glad to announce the first release candidate of a new major version of Cayenne. The latest version can be downloaded from here.
NOTE: Please see Milestone 1, Milestone 2 and Milestone 3 release notes for more information on Cayenne 5.
Full List of Changes in this Release
Changes/New Features
- CAY-2875 Allow storing UUIDs in binary columns
- CAY-2998 Modeler: clickabe “Target” column to navigate relationships
- CAY-3000 Modeler: unifying the main views of all model objects
- CAY-3004 Modeler: Rework DbEntity PK generation UI to match the XML model
- CAY-3007 Deprecate SelectById
- CAY-3010 LocalDateTime and friends should be accessed directly via JDBC
- CAY-3012 Improve reflection performance
- CAY-3013 MySQL: JDBC-level streaming for iterators
- CAY-3014 Remove QueryChain
- CAY-3015 Get rid of RefreshQuery
- CAY-3016 Get rid of RelationshipQuery
- CAY-3017 ObjectContext should not be a DataChannel
- CAY-3019 Skip noop conditions in generated SQL
- CAY-3020 Remove serialization contracts
- CAY-3021 Get rid of ObjectIdQuery
- CAY-3022 Cleanup ObjectContext / DataContext query API
- CAY-3023 Replace QueryResult with a List of redesigned QueryResult items
-
CAY-3024 Replace QueryResponse with List
- CAY-3025 ObjectContext to require/return Persistent for all object ops
- CAY-3026 Parseable ObjectSelect / ColumnSelect
- CAY-3027 Replace StringIdQuery with StringIdFetcher
- CAY-3028 Im-memory evaluation of ASTSum
- CAY-3034 Remove “cayenne-osgi” module
- CAY-3035 Remove “cayenne-lifecycle” module
- CAY-3036 Auto-upgrade projects in runtime
- CAY-3037 Switch ObjectSelect query format in XML to the parsable string
- CAY-3038 Remove EJBQLQuery
- CAY-3039 Refactor Expressions to be independent from the parser syntax
- CAY-3040 Descriptive XML tags for mapped queries
- CAY-3041 Unify XML style across XSDs
- CAY-3042 Rename “domain” to “project” in the Modeler and XSD
- CAY-3043 project.xsd, dataMap.xsd: replace “property” with top tag attributes
- CAY-3047 Per-statement “snapshotVersion”
- CAY-3048 Per-object locking in the ObjectStore
- CAY-3049 Cheap ClockMap to replace ConcurrentLinkedHashMap
- CAY-3050 Array-based DataRows
- CAY-3051 Replace PropertyVisitor with ClassDescriptor property collections
- CAY-3054 Remove ObjRelationship.isReadOnly()
- CAY-3056 Switch DataMap queries to the new query parser
- CAY-3057 Improve parameter binding in the query parser
- CAY-3066 Modeler: update SQLTemplate editor UI
Bug Fixes
- CAY-2779 “Nullify” delete rules is not processed with n:m and inheritance hierarchy
- CAY-2832 SelectActionIT is failing on GitHub Actions
- CAY-2911 Vertical Inheritance: Column Select Sometimes Null With Vertically Inherited Entity
- CAY-2996 Javadocs are missing from the central artifacts
- CAY-2999 Modeler: A restricted method in java.lang.System has been called
- CAY-3001 Modeler: Auto-increment attribute is not picked up
- CAY-3002 Modeler: NPE after clicking path chooser
- CAY-3003 Modeler: NPE editing unmapped ObjAttribute
- CAY-3005 ResultIterator.allRows() doesn’t convert to DataObjects
- CAY-3006 Can’t match a “self” property of an entity with a compound PK
- CAY-3008 Disjoint prefetch returns wrong results when the query matches on a “self” property
- CAY-3009 Column select with CLOB attribute and distinct() fails
- CAY-3011 PostgreSQL: use transactions on select with fetch size
- CAY-3018 EJBQL: broken joins when selecting a vertically inherited entity
- CAY-3030 Cayenne stack must be able to start without touching the DataSource
- CAY-3031 Expression parameter names may conflict with function names
- CAY-3032 ColumnSelect: an entity column over a to-many relationship filters out root rows with no related objects
- CAY-3033 Selects with subqueries produce conflicting cache keys
- CAY-3044 Paginated query with a joint to-many prefetch returns duplicate ids and unresolved Integer elements
- CAY-3045 Race condition: ClassCastException resolving a to-one fault concurrently on a shared DataContext
- CAY-3046 Refreshing an object from a snapshot discards to-ones, causing fault resolution on a shared DataContext
- CAY-3052 Modeler: inconsistent classloading in dbimport
- CAY-3053 Untyped #bind of java.time values fails with “conversion to VARBINARY is not supported”