我正在从事Spring Boot项目,只是我已升级到Spring Boot 2.0.3.RELEASE版本。
升级后,我遇到了
的问题org.springframework.data.mapping.PropertyReferenceException
我在所有地方搜索,但PropertyReferenceException抛出错误时,查找类或任何地方不存在的对象。
我搜索了很多,但是无法找到解决方案。
MyLog.java
package com.my.domain;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.springframework.data.elasticsearch.annotations.Document;
import javax.persistence.*;
import java.io.Serializable;
import java.time.ZonedDateTime;
import java.util.Objects;
/**
* A myLog.
*/
@Entity
@Table(name = "my_log")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "mylog")
public class MyLog implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "my_id")
private Long id;
@Column(name = "my_rc_item_affected")
private Long myRcItemAffected;
@Column(name = "my_record_affected")
private Long myRecordAffected;
@Column(name = "my_item_affected")
private Long myItemAffected;
@Column(name = "my_entity")
private String myEntity;
@Column(name = "my_updated_date")
private ZonedDateTime myUpdatedDate;
@Column(name = "my_updated_by")
private String myUpdatedBy;
@Column(name = "my_action")
private String myAction;
@Column(name = "my_field_modified")
private String myFieldModified;
@Column(name = "my_new_value")
private String myNewValue;
@Column(name = "my_old_value")
private String myOldValue;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getmyRcItemAffected() {
return myRcItemAffected;
}
public myLog myRcItemAffected(Long myRcItemAffected) {
this.myRcItemAffected = myRcItemAffected;
return this;
}
public void setmyRcItemAffected(Long myRcItemAffected) {
this.myRcItemAffected = myRcItemAffected;
}
public Long getmyRecordAffected() {
return myRecordAffected;
}
public myLog myRecordAffected(Long myRecordAffected) {
this.myRecordAffected = myRecordAffected;
return this;
}
public void setmyRecordAffected(Long myRecordAffected) {
this.myRecordAffected = myRecordAffected;
}
public Long getmyItemAffected() {
return myItemAffected;
}
public myLog myItemAffected(Long myItemAffected) {
this.myItemAffected = myItemAffected;
return this;
}
public void setmyItemAffected(Long myItemAffected) {
this.myItemAffected = myItemAffected;
}
public String getmyEntity() {
return myEntity;
}
public myLog myEntity(String myEntity) {
this.myEntity = myEntity;
return this;
}
public void setmyEntity(String myEntity) {
this.myEntity = myEntity;
}
public ZonedDateTime getmyUpdatedDate() {
return myUpdatedDate;
}
public myLog myUpdatedDate(ZonedDateTime myUpdatedDate) {
this.myUpdatedDate = myUpdatedDate;
return this;
}
public void setmyUpdatedDate(ZonedDateTime myUpdatedDate) {
this.myUpdatedDate = myUpdatedDate;
}
public String getmyUpdatedBy() {
return myUpdatedBy;
}
public myLog myUpdatedBy(String myUpdatedBy) {
this.myUpdatedBy = myUpdatedBy;
return this;
}
public void setmyUpdatedBy(String myUpdatedBy) {
this.myUpdatedBy = myUpdatedBy;
}
public String getmyAction() {
return myAction;
}
public myLog myAction(String myAction) {
this.myAction = myAction;
return this;
}
public void setmyAction(String myAction) {
this.myAction = myAction;
}
public String getmyFieldModified() {
return myFieldModified;
}
public myLog myFieldModified(String myFieldModified) {
this.myFieldModified = myFieldModified;
return this;
}
public void setmyFieldModified(String myFieldModified) {
this.myFieldModified = myFieldModified;
}
public String getmyNewValue() {
return myNewValue;
}
public myLog myNewValue(String myNewValue) {
this.myNewValue = myNewValue;
return this;
}
public void setmyNewValue(String myNewValue) {
this.myNewValue = myNewValue;
}
public String getmyOldValue() {
return myOldValue;
}
public myLog myOldValue(String myOldValue) {
this.myOldValue = myOldValue;
return this;
}
public void setmyOldValue(String myOldValue) {
this.myOldValue = myOldValue;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
myLog myLog = (myLog) o;
if(myLog.id == null || id == null) {
return false;
}
return Objects.equals(id, myLog.id);
}
@Override
public int hashCode() {
return Objects.hashCode(id);
}
@Override
public String toString() {
return "myLog{" +
"id=" + id +
", myRcItemAffected='" + myRcItemAffected + "'" +
", myRecordAffected='" + myRecordAffected + "'" +
", myEntity='" + myEntity + "'" +
", myUpdatedDate='" + myUpdatedDate + "'" +
", myUpdatedBy='" + myUpdatedBy + "'" +
", myAction='" + myAction + "'" +
", myFieldModified='" + myFieldModified + "'" +
", myNewValue='" + myNewValue + "'" +
", myOldValue='" + myOldValue + "'" +
'}';
}
}
MyLogRepository类
package com.my.repository;
import com.my.domain.MyLog;
import org.springframework.data.jpa.repository.*;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.time.ZonedDateTime;
import java.util.List;
/**
* Spring Data JPA repository for the MyLog entity.
*/
@SuppressWarnings("unused")
@Repository
public interface MyLogRepository extends JpaRepository<MyLog, Long> {
List<MyLog> findAllByMyUpdatedDateBetweenOrderByMyUpdatedDateDesc(ZonedDateTime fromDate, ZonedDateTime toDate);
List<MyLog> findByMyRcItemAffectedAndMyEntity(Long itemAffected, String myEntity);
@Query("SELECT a FROM MyLog a WHERE a.myRcItemAffected = :itemAffected ORDER BY a.myUpdatedDate desc")
List<MyLog> findByMyItemAffected(@Param("itemAffected") Long itemAffected);
List<MyLog> findAllByMyUpdatedDateAfterOrderByMyUpdatedDateDesc(ZonedDateTime fromDate);
@Query("SELECT a FROM MyLog a WHERE a.myRecordAffected = :itemAffected ORDER BY a.myUpdatedDate desc")
List<MyLog> findByMyRecordAffected(@Param("itemAffected") Long itemAffected);
}
引发的问题是:
org.springframework.data.mapping.PropertyReferenceException: No property getOne found for type MyLog!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:94)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:358)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:334)
at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:287)
at org.springframework.data.mapping.PropertyPath$$Lambda$1233/1495869254.apply(Unknown Source)
at java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:324)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:269)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:252)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81)
at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:250)
at org.springframework.data.repository.query.parser.PartTree$OrPart$$Lambda$1232/330761886.apply(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:251)
at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:380)
at org.springframework.data.repository.query.parser.PartTree$Predicate$$Lambda$1230/1046669721.apply(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:381)
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:93)
at org.springframework.data.elasticsearch.repository.query.ElasticsearchPartQuery.<init>(ElasticsearchPartQuery.java:46)
at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactory$ElasticsearchQueryLookupStrategy.resolveQuery(ElasticsearchRepositoryFactory.java:123)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lookupQuery(RepositoryFactorySupport.java:553)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(RepositoryFactorySupport.java:546)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor$$Lambda$1215/461755861.apply(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Collections$UnmodifiableCollection$1.forEachRemaining(Collections.java:1049)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.mapMethodsToQuery(RepositoryFactorySupport.java:548)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$new$0(RepositoryFactorySupport.java:538)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor$$Lambda$1211/1422494159.apply(Unknown Source)
at java.util.Optional.map(Optional.java:215)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:538)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:317)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$3(RepositoryFactoryBeanSupport.java:287)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport$$Lambda$1123/503845034.get(Unknown Source)
at org.springframework.data.util.Lazy.getNullable(Lazy.java:141)
at org.springframework.data.util.Lazy.get(Lazy.java:63)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:290)
at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean.afterPropertiesSet(ElasticsearchRepositoryFactoryBean.java:67)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1767)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1704)
... 76 common frames omitted
如何解决不存在的getOne属性问题?
答案 0 :(得分:0)
似乎您在 MyLog.java 中使用了多个Spring Data模块:
@Entity // Spring JPA
@Table(name = "my_log")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "mylog") // Spring Elasticsearch
public class MyLog implements Serializable {
根据spring documentation,您必须告诉您的应用程序存储库在哪里:
@EnableJpaRepositories(basePackages = "com.acme.repositories.jpa")
@EnableElasticsearchRepositories(basePackages = "com.acme.repositories.elasticsearch")
interface Configuration { }