What’s New
This section covers new features of Jmix framework 1.6, as well as some breaking changes to be aware of when upgrading from a previous version of the framework.
Version 1.6 doesn’t come with a corresponding version of Studio. Instead, we recommend using the latest available Studio 2.x.
How To Upgrade
To create new projects with Jmix 1.6 or to upgrade an existing project, you need Studio 2.3 or later, so update your Jmix Studio plugin first. Studio 2.3 requires IntelliJ IDEA version 2023.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.0.2 in
gradle/wrapper/gradle-wrapper.properties
.
See also the full list of breaking changes that can affect your project after the upgrade.
Updated Dependencies
ch.qos.logback:logback-classic:1.2.13
ch.qos.logback:logback-core:1.2.13
com.fasterxml.jackson.core:jackson-core:2.16.1
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.16.1
com.fasterxml.woodstox:woodstox-core:6.5.1
com.google.guava:guava:33.1.0-jre
com.google.gwt:gwt-dev:2.10.0
com.google.protobuf:protobuf-java:3.21.12
com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20220608.1
com.hazelcast:hazelcast:5.3.6
com.ibm.icu:icu4j:74.2
com.jayway.jsonpath:json-path:2.9.0
com.nimbusds:nimbus-jose-jwt:9.37.3
com.nimbusds:oauth2-oidc-sdk:9.43.4
com.opencsv:opencsv:5.9
com.thoughtworks.xstream:xstream:1.4.20
commons-io:commons-io:2.15.1
net.sf.jasperreports:jasperreports-fonts:6.20.6
net.sf.jasperreports:jasperreports:6.20.6
org.apache.commons:commons-compress:1.26.0
org.apache.james:apache-mime4j-core:0.8.10
org.apache.logging.log4j:log4j-core:2.18.0
org.apache.poi:poi:5.2.5
org.apache.tika:tika-parsers:1.28.5
org.apache.tomcat.embed:tomcat-embed-core:9.0.95
org.apache.tomcat.embed:tomcat-embed-el:9.0.95
org.apache.tomcat.embed:tomcat-embed-websocket:9.0.95
org.apache.xmlgraphics:batik-*:1.17
org.apache.xmlgraphics:fop:2.8
org.apache.xmlgraphics:xmlgraphics-commons:2.8
org.docx4j:docx4j-ImportXHTML:8.3.11
org.docx4j:docx4j-JAXB-ReferenceImpl:11.3.2
org.docx4j:docx4j-export-fo:11.3.2
org.dom4j:dom4j:2.1.4
org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.24
org.freemarker:freemarker:2.3.32
org.glassfish:jakarta.el:3.0.4
org.hsqldb:hsqldb:2.7.2
org.jsoup:jsoup:1.17.2
org.postgresql:postgresql:42.7.3
org.springframework.security:spring-security-core:5.7.12
org.springframework:spring-web:5.3.39
org.springframework:spring-webmvc:5.3.39
org.springframework:spring-webflux:5.3.39
org.webjars.npm:grapesjs-blocks-basic:1.0.2'
org.webjars.npm:grapesjs-blocks-flexbox:1.0.1'
org.webjars.npm:grapesjs-custom-code:1.0.2'
org.webjars.npm:grapesjs-parser-postcss:1.0.3'
org.webjars.npm:grapesjs-plugin-ckeditor:1.0.1'
org.webjars.npm:grapesjs-plugin-forms:2.0.6'
org.webjars.npm:grapesjs-preset-newsletter:1.0.2'
org.webjars.npm:grapesjs-preset-webpage:1.0.3'
org.webjars.npm:grapesjs-style-filter:1.0.2'
org.webjars.npm:grapesjs-tabs:1.0.6'
org.webjars.npm:grapesjs-tooltip:0.1.8'
org.webjars.npm:grapesjs-tui-image-editor:1.0.2'
org.webjars.npm:grapesjs:0.21.8'
org.webjars.npm:mime-db:1.51.0'
org.webjars:jquery-ui:1.13.2
org.yaml:snakeyaml:2.2
xerces:xercesImpl:2.12.2
New Features and Improvements
Sorting by Multiple Columns in DataGrid
Sorting by multiple columns in DataGrid is now possible when you click a column header while holding down the Shift
key.
GroupTable Sorts by Grouping Columns
GroupTable now automatically adds sorting by grouping columns. So, when using pagination, the distribution of data between pages corresponds to grouping.
You can add the sortOnGroupEnabled="false"
attribute to the groupTable
element to turn off this feature.
Collection Properties in Generic Filter
The Filter component now allows you to create conditions for collection (to-many) properties.
For example, in the Onboarding application, you can filter Users by the steps
property and its nested properties: steps.dueDate
, steps.step.name
, etc. The JPA data store will automatically create an appropriate JPQL query with the join
clause. Previously, you could achieve this only by defining a JPQL condition manually.
Total Progress in FileMultiUploadField
FileMultiUploadField now displays the total progress of uploaded files. It provides better feedback to users when uploading many small files.
Use totalProgressFormat
property to set a custom total label format and totalProgressEnabled
property to set whether to display the total progress bar.
Breaking Changes
Removed Flow UI
Last year, when we released Jmix 2.0, we announced that Classic UI would continue to exist in the Jmix 1.x branch, while Flow UI would be included in Jmix from version 2.0 onwards (see Extended Support for Classic UI).
Therefore, we have removed Flow UI modules from Jmix 1.6.
If you have a project on Jmix 1.5 using Flow UI, migrate to the latest Jmix 2.x.
YARG Classes Moved Into Reports
The YARG report engine has been moved from an external dependency into the Reports add-on sources. If you have used com.haulmont.yarg.*
classes in your project, replace their imports to io.jmix.reports.yarg.*
.
Lazy Loaded Soft Deleted OneToOne Reference
The lazy loading of soft-deleted one-to-one references has been fixed. Now it behaves the same as eager loading with fetch plans:
-
Soft-deleted entities are loaded through one-to-one references from the owning side.
-
Soft-deleted entities are NOT loaded through one-to-one references from the mappedBy side.
Previously, the behavior of lazy loading was opposite.
See #2466 for more information.