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”