java - Spring Data Solr : Unable to locate Attribute from Repository -
this working fine until manage migrate spring boot.
before using version spring-data-solr version : 1.4.0.release , boot got version 1.3.3.
i tried remove spring-boot-starter-data-solr , reset static definition got same issue..
update current pom.xml :
<project> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.2.5.release</version> </parent> <repositories> <repository> <id>excilys-release</id> <url>http://repository.excilys.com/content/repositories/releases</url> </repository> <repository> <id>repo2_maven_org</id> <url>http://repo2.maven.org/maven2</url> </repository> <repository> <id>maven-restlet</id> <url>http://maven.restlet.com</url> </repository> </repositories> <dependencies> <!-- spring boot --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-jpa</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-security</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-websocket</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-actuator</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-solr</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-configuration-processor</artifactid> <optional>true</optional> </dependency> <!-- spring solr --> <dependency> <groupid>org.apache.solr</groupid> <artifactid>solr-core</artifactid> <version>4.10.0</version> <exclusions> <exclusion> <groupid>org.slf4j</groupid> <artifactid>slf4j-jdk14</artifactid> </exclusion> <exclusion> <artifactid>log4j</artifactid> <groupid>log4j</groupid> </exclusion> </exclusions> </dependency> </project>
my current solrconfig.java :
@configuration @enablesolrrepositories(basepackages = "com.repository.solr") @componentscan("com.repository.solr") public class solrconfig { private final logger logger = loggerfactory.getlogger(this.getclass()); public static final string property_solr_server_core = "solr.core"; @resource private environment environment; @resource ogcparameters ogcparameters; @bean public solrserver solrserver() { final ogcparameters.slr slr = ogcparameters.slr(); if (!environment.containsproperty(property_solr_server_core)) { logger.warn("you running on default solr core, create or edit application.properties avoid behaviour"); } string solrhostwithcoreifnecessary = slr.host() .concat(slr.core()); return new httpsolrserver(solrhostwithcoreifnecessary); } @bean public solroperations solrtemplate() throws parserconfigurationexception, saxexception, ioexception { return new solrtemplate(solrserver()); } }
my current solrrepository.java :
@repository public interface documentsolrrepository extends solrcrudrepository<document, long>, documentsolrrepositorycustom { set<document> findbytextcontaining(@param("text") string test); }
my current entity using @field
attribute binded solrrepository field causes server start fail :
@entity @jsonignoreproperties(ignoreunknown = true) public class document { private long id; @id @generatedvalue(strategy=generationtype.sequence, generator="document_seq") @sequencegenerator(name="document_seq", sequencename="document_seq") public long getid() { return id; } public document setid(long id) { this.id = id; return this; } /* solr specific fields */ @field("text") private string text; @transient @jsonignore public string gettext() { return text; } public document settext(string text) { this.text = text; return this; } }
the error log stacktrace :
exception in thread "main" org.springframework.beans.factory.beancreationexception: error creating bean name 'applicantcontroller': injection of resource dependencies failed; caused by: java.lang.illegalargumentexception: unable locate attribute the given name [text] on managedtype [com.entity.document] @ org.hibernate.jpa.internal.metamodel.abstractmanagedtype.checknotnull(abstractmanagedtype.java:144) @ org.hibernate.jpa.internal.metamodel.abstractmanagedtype.getattribute(abstractmanagedtype.java:130) @ org.springframework.data.jpa.repository.query.queryutils.toexpressionrecursively(queryutils.java:475) @ org.springframework.data.jpa.repository.query.jpaquerycreator$predicatebuilder.build(jpaquerycreator.java:199) @ org.springframework.data.jpa.repository.query.jpaquerycreator.topredicate(jpaquerycreator.java:146) @ org.springframework.data.jpa.repository.query.jpaquerycreator.create(jpaquerycreator.java:86) @ org.springframework.data.jpa.repository.query.jpaquerycreator.create(jpaquerycreator.java:44) @ org.springframework.data.repository.query.parser.abstractquerycreator.createcriteria(abstractquerycreator.java:109) @ org.springframework.data.repository.query.parser.abstractquerycreator.createquery(abstractquerycreator.java:88) @ org.springframework.data.repository.query.parser.abstractquerycreator.createquery(abstractquerycreator.java:73) @ org.springframework.data.jpa.repository.query.parttreejpaquery$querypreparer.<init>(parttreejpaquery.java:110) @ org.springframework.data.jpa.repository.query.parttreejpaquery$countquerypreparer.<init>(parttreejpaquery.java:230) @ org.springframework.data.jpa.repository.query.parttreejpaquery.<init>(parttreejpaquery.java:64) @ org.springframework.data.jpa.repository.query.jpaquerylookupstrategy$createquerylookupstrategy.resolvequery(jpaquerylookupstrategy.java:94) ... 68 more
you don't need exclude or add additional dependency. instead define version used spring-data projects using properties follows:
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.2.5.release</version> </parent> <properties> <spring-data-releasetrain.version>fowler-sr2</spring-data-releasetrain.version> </properties> <dependencies> ... <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-solr</artifactid> </dependency> ... </dependencies>
nothing else needed. way, fowler-sr2 released 28.07 (its still hot).
Comments
Post a Comment