What’s New
This section covers new features of Jmix framework 1.7, as well as some breaking changes to be aware of when upgrading from a previous version of the framework.
Version 1.7 doesn’t come with a corresponding version of Studio. Instead, we recommend using the latest available Studio 2.x.
How To Upgrade
To automatically upgrade an existing project to 1.7, you need Studio 2.5.2 or later, so update your Jmix Studio plugin first. Studio 2.5.2 requires IntelliJ IDEA version 2024.3 or newer. |
See Upgrading Project section for how to upgrade your project using Studio. The automatic migration procedure makes the following changes in your project:
-
Updates the version of Jmix BOM which in turn defines versions of all dependencies.
-
Updates the version of Jmix Gradle plugin.
-
Updates the version of Gradle wrapper to 8.12.1 in
gradle/wrapper/gradle-wrapper.properties
.
Updated Dependencies
The following major dependencies have been updated:
-
Vaadin 8.14.4
-
EclipseLink 2.7.15
-
Embedded Tomcat 9.0.102
New Features and Improvements
Reduced Build Time
The build process now skips enhancing entities if they have not been modified since the last build, which significantly reduces build time for projects with a large data model.
For example, if you have built your project, then you modify a view controller and build again, you should see the following message in the console: Entities enhancing was skipped, because entity classes haven’t been changed since the last build
.
To disable this behavior and enhance all entities on each compilation, add the following configuration to build.gradle
:
jmix {
entitiesEnhancing {
skipUnmodifiedEntitiesEnhancing = false
}
}
See #4254 for more information.
OAuth2 Tokens Table Cleanup
The expires_at
column has been added to the oauth_access_token
and oauth_refresh_token
tables. It’s filled with the expiration date taken from the token data during its creation.
The new OAuth2ExpiredTokenCleaner
service allows you to remove expired access/refresh tokens. If you want to invoke it regularly, set up a Quartz job.
Note that existing records will not be updated during migration and will keep null values in the expires_at column
. Thus, OAuth2ExpiredTokenCleaner
will not remove these records. If you want to remove old records, execute the appropriate SQL on your database manually.
See #4120 for more information.
Table and DataGrid Columns
Previously, if any column changed its name, all user settings were ignored for the whole component. Now the column settings are applied for all unchanged columns.
See #3953 for more information.
Action State Refresh
Each screen now finds all its actions in the AfterShowEvent
and refreshes their state according to the list of EnabledRule
.
See #3907 for more information.
Default Dialog Mode Dimensions
The dialogMode
height and width of the generated screens are now set to AUTO
by default.
See #3952 for more information.
List of All Enumerations
Lists of enumerations in UI now include also enumerations that are not used in entity attributes.
See #3930 for more information.