Spring Data JPA Specifications Calling
I followed this tutorial to get Spring Data JPA Specifications: https://dzone.com/articles/using-spring-data-jpa-specification
It worked to implement that for me, but I can't call the specifications methods to search for them. I want to have them in my SearchController:
Code:
TelefonbuchSpecifications:
public static Specification<Telefonbuch> hasVorname(String vorname) {
return (root, query, cb) -> {
return cb.equal(root.get(Telefonbuch_.vorname), "%"+vorname.toLowerCase()+"%");
};
}
And now I want to call this method in my SearchController (SucheController), but I don't know how.
At the moment the method looks like this:
SucheController:
public void search(String vorname, String nachname, String telefonnummer, String handynummer) {
telefonbuch.setVorname(vorname);
telefonbuch.setNachname(nachname);
telefonbuch.setTelefonnummer(telefonnummer);
telefonbuch.setHandynummer(handynummer);
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Telefonbuch> query = builder.createQuery(Telefonbuch.class);
Root<Telefonbuch> root = query.from(Telefonbuch.class);
List<Predicate> predicates = new ArrayList<Predicate>();
if (!vorname.isEmpty()) {
//eintraege = telefonbuchRepository.findAll(hasVorname()); -> does not work
Predicate condition = builder.like(builder.lower(root.get(Telefonbuch_.vorname)), "%"+vorname.toLowerCase()+"%");
predicates.add(condition);
}
...
query.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
java spring spring-data-jpa jpa-criteria
add a comment |
I followed this tutorial to get Spring Data JPA Specifications: https://dzone.com/articles/using-spring-data-jpa-specification
It worked to implement that for me, but I can't call the specifications methods to search for them. I want to have them in my SearchController:
Code:
TelefonbuchSpecifications:
public static Specification<Telefonbuch> hasVorname(String vorname) {
return (root, query, cb) -> {
return cb.equal(root.get(Telefonbuch_.vorname), "%"+vorname.toLowerCase()+"%");
};
}
And now I want to call this method in my SearchController (SucheController), but I don't know how.
At the moment the method looks like this:
SucheController:
public void search(String vorname, String nachname, String telefonnummer, String handynummer) {
telefonbuch.setVorname(vorname);
telefonbuch.setNachname(nachname);
telefonbuch.setTelefonnummer(telefonnummer);
telefonbuch.setHandynummer(handynummer);
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Telefonbuch> query = builder.createQuery(Telefonbuch.class);
Root<Telefonbuch> root = query.from(Telefonbuch.class);
List<Predicate> predicates = new ArrayList<Predicate>();
if (!vorname.isEmpty()) {
//eintraege = telefonbuchRepository.findAll(hasVorname()); -> does not work
Predicate condition = builder.like(builder.lower(root.get(Telefonbuch_.vorname)), "%"+vorname.toLowerCase()+"%");
predicates.add(condition);
}
...
query.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
java spring spring-data-jpa jpa-criteria
You must use JPA repositories .Have a look at the CustomerRepository dzone.com/articles/using-spring-data-jpa-specification
– Simon Martinelli
2 days ago
I use JPA repositories in my "TelefonbuchRepository": public interface TelefonbuchRepository extends JpaRepository<Telefonbuch, Long>
– CptDayDreamer
2 days ago
but you commented out this line. What does not work?
– Simon Martinelli
2 days ago
The method is undefined for SucheController. I can call it as TelefonbuchSpecifications.hasVorname(...) but not else. And even if i call it like this, I don't know how to use it like the predicates to have it like conditions
– CptDayDreamer
2 days ago
add a comment |
I followed this tutorial to get Spring Data JPA Specifications: https://dzone.com/articles/using-spring-data-jpa-specification
It worked to implement that for me, but I can't call the specifications methods to search for them. I want to have them in my SearchController:
Code:
TelefonbuchSpecifications:
public static Specification<Telefonbuch> hasVorname(String vorname) {
return (root, query, cb) -> {
return cb.equal(root.get(Telefonbuch_.vorname), "%"+vorname.toLowerCase()+"%");
};
}
And now I want to call this method in my SearchController (SucheController), but I don't know how.
At the moment the method looks like this:
SucheController:
public void search(String vorname, String nachname, String telefonnummer, String handynummer) {
telefonbuch.setVorname(vorname);
telefonbuch.setNachname(nachname);
telefonbuch.setTelefonnummer(telefonnummer);
telefonbuch.setHandynummer(handynummer);
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Telefonbuch> query = builder.createQuery(Telefonbuch.class);
Root<Telefonbuch> root = query.from(Telefonbuch.class);
List<Predicate> predicates = new ArrayList<Predicate>();
if (!vorname.isEmpty()) {
//eintraege = telefonbuchRepository.findAll(hasVorname()); -> does not work
Predicate condition = builder.like(builder.lower(root.get(Telefonbuch_.vorname)), "%"+vorname.toLowerCase()+"%");
predicates.add(condition);
}
...
query.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
java spring spring-data-jpa jpa-criteria
I followed this tutorial to get Spring Data JPA Specifications: https://dzone.com/articles/using-spring-data-jpa-specification
It worked to implement that for me, but I can't call the specifications methods to search for them. I want to have them in my SearchController:
Code:
TelefonbuchSpecifications:
public static Specification<Telefonbuch> hasVorname(String vorname) {
return (root, query, cb) -> {
return cb.equal(root.get(Telefonbuch_.vorname), "%"+vorname.toLowerCase()+"%");
};
}
And now I want to call this method in my SearchController (SucheController), but I don't know how.
At the moment the method looks like this:
SucheController:
public void search(String vorname, String nachname, String telefonnummer, String handynummer) {
telefonbuch.setVorname(vorname);
telefonbuch.setNachname(nachname);
telefonbuch.setTelefonnummer(telefonnummer);
telefonbuch.setHandynummer(handynummer);
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Telefonbuch> query = builder.createQuery(Telefonbuch.class);
Root<Telefonbuch> root = query.from(Telefonbuch.class);
List<Predicate> predicates = new ArrayList<Predicate>();
if (!vorname.isEmpty()) {
//eintraege = telefonbuchRepository.findAll(hasVorname()); -> does not work
Predicate condition = builder.like(builder.lower(root.get(Telefonbuch_.vorname)), "%"+vorname.toLowerCase()+"%");
predicates.add(condition);
}
...
query.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
java spring spring-data-jpa jpa-criteria
java spring spring-data-jpa jpa-criteria
edited 2 days ago
Billy Frost
1,74698
1,74698
asked 2 days ago
CptDayDreamer
105
105
You must use JPA repositories .Have a look at the CustomerRepository dzone.com/articles/using-spring-data-jpa-specification
– Simon Martinelli
2 days ago
I use JPA repositories in my "TelefonbuchRepository": public interface TelefonbuchRepository extends JpaRepository<Telefonbuch, Long>
– CptDayDreamer
2 days ago
but you commented out this line. What does not work?
– Simon Martinelli
2 days ago
The method is undefined for SucheController. I can call it as TelefonbuchSpecifications.hasVorname(...) but not else. And even if i call it like this, I don't know how to use it like the predicates to have it like conditions
– CptDayDreamer
2 days ago
add a comment |
You must use JPA repositories .Have a look at the CustomerRepository dzone.com/articles/using-spring-data-jpa-specification
– Simon Martinelli
2 days ago
I use JPA repositories in my "TelefonbuchRepository": public interface TelefonbuchRepository extends JpaRepository<Telefonbuch, Long>
– CptDayDreamer
2 days ago
but you commented out this line. What does not work?
– Simon Martinelli
2 days ago
The method is undefined for SucheController. I can call it as TelefonbuchSpecifications.hasVorname(...) but not else. And even if i call it like this, I don't know how to use it like the predicates to have it like conditions
– CptDayDreamer
2 days ago
You must use JPA repositories .Have a look at the CustomerRepository dzone.com/articles/using-spring-data-jpa-specification
– Simon Martinelli
2 days ago
You must use JPA repositories .Have a look at the CustomerRepository dzone.com/articles/using-spring-data-jpa-specification
– Simon Martinelli
2 days ago
I use JPA repositories in my "TelefonbuchRepository": public interface TelefonbuchRepository extends JpaRepository<Telefonbuch, Long>
– CptDayDreamer
2 days ago
I use JPA repositories in my "TelefonbuchRepository": public interface TelefonbuchRepository extends JpaRepository<Telefonbuch, Long>
– CptDayDreamer
2 days ago
but you commented out this line. What does not work?
– Simon Martinelli
2 days ago
but you commented out this line. What does not work?
– Simon Martinelli
2 days ago
The method is undefined for SucheController. I can call it as TelefonbuchSpecifications.hasVorname(...) but not else. And even if i call it like this, I don't know how to use it like the predicates to have it like conditions
– CptDayDreamer
2 days ago
The method is undefined for SucheController. I can call it as TelefonbuchSpecifications.hasVorname(...) but not else. And even if i call it like this, I don't know how to use it like the predicates to have it like conditions
– CptDayDreamer
2 days ago
add a comment |
1 Answer
1
active
oldest
votes
You need to have a a TelefonbuchRepository interface which implements JpaRepository
and JpaSpecificationExecutor
. The latter gives you methods, to which you can pass your Specification
:
- long count(Specification<T> spec)
- List<T> findAll(Specification<T> spec)
- Page<T> findAll(Specification<T> spec, Pageable pageable)
- List<T> findAll(Specification<T> spec, Sort sort)
- Optional<T> findOne(Specification<T> spec)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53945195%2fspring-data-jpa-specifications-calling%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need to have a a TelefonbuchRepository interface which implements JpaRepository
and JpaSpecificationExecutor
. The latter gives you methods, to which you can pass your Specification
:
- long count(Specification<T> spec)
- List<T> findAll(Specification<T> spec)
- Page<T> findAll(Specification<T> spec, Pageable pageable)
- List<T> findAll(Specification<T> spec, Sort sort)
- Optional<T> findOne(Specification<T> spec)
add a comment |
You need to have a a TelefonbuchRepository interface which implements JpaRepository
and JpaSpecificationExecutor
. The latter gives you methods, to which you can pass your Specification
:
- long count(Specification<T> spec)
- List<T> findAll(Specification<T> spec)
- Page<T> findAll(Specification<T> spec, Pageable pageable)
- List<T> findAll(Specification<T> spec, Sort sort)
- Optional<T> findOne(Specification<T> spec)
add a comment |
You need to have a a TelefonbuchRepository interface which implements JpaRepository
and JpaSpecificationExecutor
. The latter gives you methods, to which you can pass your Specification
:
- long count(Specification<T> spec)
- List<T> findAll(Specification<T> spec)
- Page<T> findAll(Specification<T> spec, Pageable pageable)
- List<T> findAll(Specification<T> spec, Sort sort)
- Optional<T> findOne(Specification<T> spec)
You need to have a a TelefonbuchRepository interface which implements JpaRepository
and JpaSpecificationExecutor
. The latter gives you methods, to which you can pass your Specification
:
- long count(Specification<T> spec)
- List<T> findAll(Specification<T> spec)
- Page<T> findAll(Specification<T> spec, Pageable pageable)
- List<T> findAll(Specification<T> spec, Sort sort)
- Optional<T> findOne(Specification<T> spec)
answered 2 days ago
Robert Niestroj
7,65564379
7,65564379
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53945195%2fspring-data-jpa-specifications-calling%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You must use JPA repositories .Have a look at the CustomerRepository dzone.com/articles/using-spring-data-jpa-specification
– Simon Martinelli
2 days ago
I use JPA repositories in my "TelefonbuchRepository": public interface TelefonbuchRepository extends JpaRepository<Telefonbuch, Long>
– CptDayDreamer
2 days ago
but you commented out this line. What does not work?
– Simon Martinelli
2 days ago
The method is undefined for SucheController. I can call it as TelefonbuchSpecifications.hasVorname(...) but not else. And even if i call it like this, I don't know how to use it like the predicates to have it like conditions
– CptDayDreamer
2 days ago