【问题标题】:Caused by: org.springframework.data.mapping.PropertyReferenceException: No property languageId found for type Project原因:org.springframework.data.mapping.PropertyReferenceException:没有找到类型 Project 的属性 languageId
【发布时间】:2020-07-14 11:33:12
【问题描述】:

我有两个实体类,如下所示。使用 JPARepository 如何找到ProjectByProjectIdAndLanguageId。

@Entity
public class ProjectDetails {

    @Id
    private int projectId;
    private String projectDescription;
    private int languageId;


}


@Entity
public class Project {

    @Id
    private int projectId;
    private String projectName;
    private LocalDate projectStartDate;
    private LocalDate projectEndDate;
    private String projectStatus;

    @OneToOne
    private ProjectDetails projectDetails;


}


@Repository
public interface ProjectRepository extends JpaRepository<Project, Integer> {

    public List<Project> findProjectByProjectIdAndLanguageId(int projectId , int languageId);

}

我在启动 Spring Boot 应用程序时遇到错误。

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property languageId found for type Project!

【问题讨论】:

  • 错误清楚地告诉你哪里出了问题。您的 Project 实体没有 languageId 字段。
  • 想知道如何解决它。有什么方法可以实现我真正想要的吗?这两个是现有表,因此我无法更改任何内容。

标签: spring-boot jpa java-8 spring-data-jpa hibernate-mapping


【解决方案1】:

如果您想过滤不在聚合根目录上的属性,您必须提供完整路径。 以下应该可以工作。

public List<Project> findProjectByProjectIdAndProjectDetailsLanguageId(int projectId , int languageId);

【讨论】:

  • 谢谢@Jens。我认为这应该解决我的目的。我现在收到另一个错误“oracle.jdbc.OracleDatabaseException:ORA-00972:标识符太长”。已经在我的 Spring Boot 配置文件中添加了“spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl”。
  • 请不要在 cmets 中提出新问题。只需提出一个新的正确问题即可。
猜你喜欢
  • 2020-11-21
  • 2014-01-13
  • 2016-10-28
  • 1970-01-01
  • 2019-04-08
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多