我有一个mysql数据库表'Faculties',如下所示,
我的实体类(FacultyEntity)如下
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Faculty_Id")
private Integer facultyId;
@Column(name = "Faculty_Name", length = 100, nullable = false, unique = true)
private String facultyName;
@ManyToOne(cascade = { CascadeType.REFRESH })
@JoinColumn(name = "HOD_ID", nullable = true)
private FacultyEntity hodId;
我想在我的应用程序中显示结果,按HOD和然后才能排序。这就是我试过的
@Query("from FacultyEntity f ORDER BY f.hodId.facultyName, f.facultyName")
但我总共得到了4行这样的排序。我认为这是因为HOD_ID列中的空值,但我不确定。我是新手。
预期结果将是
请帮我解决这个问题。
答案 0 :(得分:1)
当您在查询中执行f.hodId
时,它会隐式转换为内部联接,从而消除null
列中HOD_Id
的两行。
试试这个
@Query("from FacultyEntity f left join f.hodId hod ORDER BY hod.facultyName, f.facultyName")