Comments (2)
Hi! That is a great question. The basic Specification
is indeed limited to class attributes or @manytoone relationships. The SQL counterpart are:
- "attribute" => WHERE table.attribute = :value
- "relatedEntity.attribute" => JOIN relatedEntity WHERE relatedEntity.attribute = :value
That is the very basic usage. For more complex needs, my opinion is that Datatables (and thus this implementation) has absolutly no clue about what the user wants to do. So it lets him make whatever he wants (handling @manytomany relationships, using 'BETWEEN' clause...) through the following method: public DataTablesOutput<T> findAll(DataTablesInput input, Specification<T> additionalSpecification)
.
With this, the user is able to either pass directly the input
object mapped from the request (the basic usage) or process this input to create an additionalSpecification
according to his needs. Please see this example: https://github.com/darrachequesne/demo-spring-datatables/blob/master/src/main/java/demo/controller/UserRestController.java#L46
In that example, the "classic" filter value is cleared, and a custom Specification
is built from the latter. I think it should cover most use-cases, but please tell me if I'm wrong.
from spring-data-jpa-datatables.
Hi Damien,
Thanks for your insights. Your design condiserations are straightforward and fully serve the purpose. As far as I can see, the Specification
passed as parameter to findAll
can not be written in a way that it is capable to handle collection attributes. Finally, I ended up rewriting your DataTablesRepositoryImpl
and wire the required specification in its public DataTablesOutput<T> findAll(DataTablesInput input, Specification<T> additionalSpecification)
and thus gain control over related SetAttribute
s via Subquery
s . The datatables now work fine and serverside processing with spring-data-jpa-datatables reduces the time for pages to get displayed a lot. Again, thanks for sharing!
Tom
from spring-data-jpa-datatables.
Related Issues (20)
- Filter by "<column> NOT IN (<input array>)" HOT 2
- how to remove the text - filtered from X total entries HOT 1
- How to Work with UserDTO HOT 2
- Can we search date in data table? HOT 2
- Duplicates items after filtering HOT 2
- Log Exceptions or they are silently lost HOT 4
- Add support for Spring Boot 3.0.0 HOT 3
- Is it possible to use specification for view? HOT 2
- Is it possible to do a regular expression search using ~ in PostgreSQL? HOT 2
- AddOrder doesnt seem to work HOT 2
- Filtering data sometimes throws ORM exception (Hibernate 6.1) HOT 10
- No property 'findAll' found for type 'Class' HOT 4
- Performance issue (suggestions on database indexes) HOT 7
- [question] specifications and counting total records HOT 4
- Show ManyToMany data HOT 1
- enable datatable repositories without using DatatablesJpaRepositoryBean HOT 1
- Order can be null HOT 4
- Specify date format in global/column search when database column is date (Oracle) HOT 4
- Searching for a record with special (national) character "ř" doesn't work HOT 5
- Search Panes Error in Relationship Table HOT 3
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 spring-data-jpa-datatables.