0

我正在尝试从 Spring Data JPA 中的多个表中获取数据。

我有:

教授.java

@Entity
public class Professor {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private Long id;
  private String username;

    private String password;

    private String firstname;

    private String lastname;

//Generated getters and setters

  @ManyToMany(mappedBy = "professors", fetch = FetchType.EAGER, cascade = { CascadeType.MERGE, CascadeType.PERSIST })
    private List<Classes> classes;

类.java

@Entity
public class Classes {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private Long id;

    private String name;

    @Lob
    private String description;

 @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, CascadeType.PERSIST })
    private List<Professor> professors;

这些实体生成名为“classes_professor”的表,字段如下 classes_id 和professor_id

我正在尝试显示具有某些 ID 的教授,该 ID 已获得具有某些 ID 的课程。

类Repository.java

@Repository
public interface ClassesRepository extends CrudRepository<Classes,Long>{

    @Query("SELECT p FROM Professor p join p.Classes c WHERE c.id =:id")
    public List<Professor> findProfessorNameById(@Param("id") long id);
}

控制器.java

public List<Professor> findProfessorNameById(@Param("id") long id){
        return classesRepository.findProfessorNameById(id);
    }

当我尝试运行它时,出现此错误:

could not resolve property: Classes of: com.oggi.model.Professor [SELECT p FROM com.oggi.model.Professor p join p.Classes c WHERE c.id =:id]
4

1 回答 1

2

错误在于 p.Classes。它应该是 p.classes 因为你的教授 POJO 中的属性是用小写的。

Query检查Professor POJO/Entity的属性;它不寻找其他实体名称。

最重要的是:有时您正在写“教授”,有时您正在写“教授”。

于 2017-08-14T14:19:58.053 回答