解决org.springframework.data.mapping.PropertyReferenceException:未找到类型MyLog的属性getOne

时间:2018-08-13 11:55:02

标签: java spring spring-boot spring-data-jpa

我正在从事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属性问题?

1 个答案:

答案 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 { }