Comments (2)
Thank you for suggestion, we'll consider changing the default UUID provider to use UUIDv7 in the next feature release.
Currently you can use a custom provider for attributes annotated with @JmixGeneratedValue
if you define an appropriate EntityInitializer
bean in your project, for example:
package com.company.onboarding;
import io.jmix.core.EntityInitializer;
import io.jmix.core.JmixOrder;
import io.jmix.core.Metadata;
import io.jmix.core.UuidProvider;
import io.jmix.core.entity.EntityValues;
import io.jmix.core.entity.annotation.JmixGeneratedValue;
import io.jmix.core.metamodel.model.MetaClass;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import java.util.UUID;
@Component
public class MyGeneratedIdEntityInitializer implements EntityInitializer, Ordered {
private final Metadata metadata;
public MyGeneratedIdEntityInitializer(Metadata metadata) {
this.metadata = metadata;
}
@Override
public void initEntity(Object entity) {
MetaClass metaClass = metadata.getClass(entity);
metaClass.getProperties().stream()
.filter(property -> property.getRange().isDatatype()
&& property.getRange().asDatatype().getJavaClass().equals(UUID.class)
&& property.getAnnotations().get(JmixGeneratedValue.class.getName()) != null)
.forEach(property -> {
if (EntityValues.getValue(entity, property.getName()) == null) {
UUID uuid = UuidProvider.createUuid(); // use your UUID provider
EntityValues.setValue(entity, property.getName(), uuid);
}
});
}
@Override
public int getOrder() {
return JmixOrder.HIGHEST_PRECEDENCE - 10;
}
}
Pay attention to the order - it must be a lower number (higher precedence) than defined in the GeneratedIdEntityInitializer
bean of the framework.
from jmix.
I found a good implementation of various UUID versions and made a small test of ordering of different types of UUIDv7.
Add uuid7 and test (WIP)
from jmix.
Related Issues (20)
- Page refresh produces exceptions if a view has @PreserveOnRefresh and Timer facet
- JmixMultiSelectComboBoxPicker can not be explicitly used in LookupWindowBuilder
- Multi-select components don't convert its value that is set programmatically to correct model value type
- Support for external BPM engine
- BPM: Process start message: "null" when name is empty
- Support native SQL query mapping mechanisms
- Spring JPA Repository Query methods not work
- Add pagination to entity inspector
- Incorrect filtering entities with blank attributes
- Namespace mapping problem in docx4j dependency
- Namespace mapping problem in docx4j dependency
- Provide built-in visualization of OpenAPI schema
- FilterCondition operation not translated correctly
- EntityComboBox does not update its value after editing entity via EntityLookupAction
- Default sorting in Reports Run view should start with group
- CodeEditor can't be enabled if it was disabled before
- Changelog Generation Error: User has no attribute applicable for table id column for new Kotlin project
- GenericFilter condition with URL query parameters facet is added endlessly
- The entity collection can't be serialized for GenericFilterUrlQueryParameters HOT 1
- The entity collection can't be serialized for GenericFilterUrlQueryParameters
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jmix.