Cayenne 4.2 Milestone 1 Released
Apr 20, 2020
Apache Cayenne team is glad to announce the first milestone release of Cayenne 4.2.
This is a development release that introduces numerous fixes and new features. While the biggest features are internal, securing future Cayenne development, there are some nice ones in the user API.
-
Property API is greatly revised. It is type aware now and allows safer usage of SQL functions.
-
Cayenne 4.2 brings support for subqueries.
ColumnSelect<Long> subQuery = ObjectSelect .columnQuery(Artist.class, Artist.ARTIST_ID_PK_PROPERTY) .where(Artist.DATE_OF_BIRTH.year().gt(1950)); List<Artist> artists = ObjectSelect.query(Artist.class) .where(Artist.ARTIST_ID_PK_PROPERTY.in(subQuery)) .select(context);
-
SQL alias supported at the top-level API:
ObjectSelect.query(Artist.class) .where(Artist.PAINTING_ARRAY.alias("p1").dot(Painting.PAINTING_TITLE).eq("painting2")) .and(Artist.PAINTING_ARRAY.alias("p2").dot(Painting.PAINTING_TITLE).eq("painting4")) .select(context);
Cayenne can be downloaded from here.
A full list of changes in this release:
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