Spring Data MongoDB Keine property get gefunden für den Typ an org.springframework.Daten.mapping.PropertyPath
Bin ich mit Spring Data MongodB 1.4.2.Release-version. Für Spring Data MongoDB, ich habe das custom repository-Schnittstelle und die Implementierung in einem Ort und erstellen Sie benutzerdefinierte Abfrage-Funktion getUsersName(Users users)
.
Aber ich bin noch immer unten Ausnahme:
Caused by: org.springframework.data.mapping.PropertyReferenceException:
No property get found for type Users! at org.springframework.data.mapping.PropertyPath. (PropertyPath.java:75) at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327) at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:359) at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:359) at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307) at
org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270) at
org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241) at
org.springframework.data.repository.query.parser.Part.(Part.java:76) at
org.springframework.data.repository.query.parser.PartTree$OrPart.(PartTree.java:201) at
org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:291) at
org.springframework.data.repository.query.parser.PartTree$Predicate.(PartTree.java:271) at
org.springframework.data.repository.query.parser.PartTree.(PartTree.java:80) at
org.springframework.data.mongodb.repository.query.PartTreeMongoQuery.(PartTreeMongoQuery.java:47)
Unten ist mein Spring Data MongoDB Struktur:
/* Users Domain Object */
@Document(collection = "users")
public class Users {
@Id
private ObjectId id;
@Field ("last_name")
private String last_name;
@Field ("first_name")
private String first_name;
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
}
/* UsersRepository.java main interface */
@Repository
public interface UsersRepository extends MongoRepository<Users,String>, UsersRepositoryCustom {
List findUsersById(String id);
}
/* UsersRepositoryCustom.java custom interface */
@Repository
public interface UsersRepositoryCustom {
List<Users> getUsersName(Users users);
}
/* UsersRepositoryImpl.java custom interface implementation */
@Component
public class UsersRepositoryImpl implements UsersRepositoryCustom {
@Autowired
MongoOperations mongoOperations;
@Override
public List<Users> getUsersName(Users users) {
return mongoOperations.find(
Query.query(Criteria.where("first_name").is(users.getFirst_name()).and("last_name").is(users.getLast_name())), Users.class);
}
/* Mongo Test function inside Spring JUnit Test class calling custom function with main UsersRepository interface */
@Autowired
private UsersRepository usersRepository;
@Test
public void getUsersName() {
Users users = new Users();
users.setFirst_name("James");`enter code here`
users.setLast_name("Oliver");
List<Users> usersDetails = usersRepository.getUsersName(users);
System.out.println("users List" + usersDetails.size());
Assert.assertTrue(usersDetails.size() > 0);
}
- Die Custom-repository funktioniert nicht wie bereits erwähnt in der docs - docs.Frühling.io/spring-data/Daten-mongo/docs/1.4.2.RELEASE/...
- Es funktioniert. Sieht aus wie die Umsetzung Klasse name war nicht korrekt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die query-Methode Erklärung in Ihrem repository interface ist ungültig. Wie klar in der die Referenz-Dokumentation, query-Methoden brauchen, um mit zu beginnen
get…By
,read_By
,find…By
oderquery…by
.findByFirst__name(…)
. Wie diese Methode ruft Leck in den Kunden, empfehlen wir, lieber an die Java-Namenskonventionen und nicht verwenden Sie Unterstriche in den ersten Platz. Dennoch habe ich eingereicht DATACMNS-505, um eine Notiz über die Flucht-Mechanismus in der Referenz-Dokumentation.Mit benutzerdefinierten Repositorys, es sollte keine Notwendigkeit für die Methode der Namenskonventionen Oliver angegeben. Ich habe mir das arbeiten mit einer Methode namens updateMessageCount
Having said that, ich sehe nicht das problem mit dem code, der hier bereitgestellt.
Ich diese Aufgabe gelöst mit Hilfe von diesem post hier, wo ich nicht war die Namensgebung meines Impl-Klasse korrekt :
Keine Immobilie gefunden, die für Typ-Fehler, wenn Sie versuchen, erstellen Sie benutzerdefinierte repository mit Spring Data JPA