当我尝试执行删除@Query时出现异常

问题描述 投票:0回答:1

我正在尝试在我的 EmployeeRepository 类中执行这个 @Query

    @Modifying
    @Query(value = "DELETE FROM Employee e WHERE e.department.companyBranch.id = :companyBranchId")
    void deleteAllByCompanyBranchId(@Param("companyBranchId") Long companyBranchId);

但是我遇到了这个异常

Column "D1_0.COMPANY_BRANCH_ID" not found; SQL statement:
delete from employee where d1_0.company_branch_id=? [42122-214]] [delete from employee where d1_0.company_branch_id=?]; SQL [delete from employee where d1_0.company_branch_id=?]] with root cause

org.h2.jdbc.JdbcSQLSyntaxErrorException: Столбец "D1_0.COMPANY_BRANCH_ID" не найден
Column "D1_0.COMPANY_BRANCH_ID" not found; SQL statement:
delete from employee where d1_0.company_branch_id=? [42122-214]

我认为它与 JPQL 约定有某种联系,但我不确定。通过查看我的异常,我可以说查询正在尝试在

COMPANY_BRANCH_ID
表中查找
EMPLOYEE
字段,但我对此不确定。

这是我的实体类:

员工:

@Entity
@Table(name = "EMPLOYEE")
@Getter
@Setter
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "DEPARTMENT_ID", nullable = false)
    private Department department;
}

部门

@Entity
@Table(name = "DEPARTMENT")
@Getter
@Setter
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "COMPANY_BRANCH_ID", nullable = false)
    private CompanyBranch companyBranch;
}

公司分公司

@Entity
@Table(name = "COMPANY_BRANCH")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CompanyBranch {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
}
java hibernate jpa spring-data-jpa jpql
1个回答
0
投票

我不确定您是否可以使用这种级别的嵌套查询。

我会尝试使用类似的东西:

@Query(value = "DELETE FROM Employee e WHERE e.department.id = (SELECT id from Departement d where d.companyBranch.id = :companyBranchId"))

这是您通常在纯 SQL 中执行的查询类型。

© www.soinside.com 2019 - 2024. All rights reserved.