在Spring JPA中有没有一种方法可以连接两个表而不使用关联类。
@Entity(name = "Employee")
@Table(name = "employees")
@JsonInclude(Include.NON_NULL)
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
@Column(name = "employee_id")
private Long employeeId;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "phone_number")
private String phoneNumber;
@Column(name = "hire_date")
private Double hireDate;
@Column(name = "job_id")
private Long jobId;
@Column(name = "salary")
private Double salary;
@Column(name = "commission_pct")
private Double commissionPct;
@Column(name = "employees")
private Long employees;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id", insertable = false, updatable = false)
@Fetch(FetchMode.JOIN)
private Department department;
}
@Entity(name = "Department")
@Table(name = "departments")
@JsonInclude(Include.NON_NULL)
public class Department implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "department_name")
private String departmentName;
@Column(name = "department_id")
private long departmentId;
@Column(name = "manager_id")
private Double managerId;
@Column(name = "location_id")
private Double locationId;
}
public class DeptEmpDto {
private long departmentId;
private String departmentName;
private Double managerId;
private Double locationId;
private long employeeId;
private String firstName;
private String lastName;
private String phoneNumber;
private Double hireDate;
private Long jobId;
private Double salary;
private Double commissionPct;
}
存储库:
public interface IEmployeeRepository extends JpaRepository<Employee, Long> {
@Query("SELECT new com.concretepage.entity.DeptEmpDto(d.departmentId,d.departmentName,d.managerId,d.locationId,e.employeeId,e.firstName,e.lastName,e.phoneNumber,e.hireDate,e.jobId,e.salary,e.commissionPct FROM Employee e INNER JOIN Department d ON d.id = e.jobId")
List<DeptEmpDto> fetchEmpDeptDataInnerJoin();
可以在Employee类中使用
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "DeptEmp",
joinColumns = @JoinColumn(name = "emp_id",referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "dep_id",referencedColumnName = "id")
)
private Set<Departments> departments = new HashSet<>();
看看这个关于JPA的
我试图左加入2表,而使用mysql"不在"条件。我的问题是,如果左连接是null,这意味着没有条目左连接,mysql不是在操作符不能正常工作。 这里有一个例子。 因为类型表中当前没有匹配的行。NOT IN操作员不工作。有什么解决办法吗?
问题内容: 我有三个表名为 现在要显示学生姓名和他所学习的课程名称, 我建立以下查询 但是它不会返回所需的结果… 如果我想找到谁是其他经理,那么归一化表格将是什么: 并希望得到以下结果: 问题答案: 只需使用:
我有以下表格: http://www.gulllakeschools.net/mysqltables.pdf 我需要以以下格式提取数据:学生姓、学生名、日期事件、日期事件(学生登录的每一天都有一个日期事件) 组件com_users是我需要从组件列中提取的组件。 我是mysql的菜鸟,不知道如何一次完成。我有这些单独运行良好的精选语句: 但我不能为我的生活让他们加入。我尝试过加入,加入,完全加入,合
以下是我现在的声明: 它工作得很好,但会产生一些主键冲突。所以,当输入新行时,我想做的是: 新建主键+佣金表数据+建议书表数据 有什么想法吗?
在两行中编写一段代码,即交换两个变量而不使用第三个变量。在java中有可能吗
我有三张桌子,桌子A,桌子B和桌子C 我想将数据从TableA列DateA迁移到TableB列DateB,仅当表B中的date字段为空时(我不想覆盖任何现有数据) 我需要使用TableC连接TableA和TableB,以匹配应按其RobotNumber更新的A行和B行。 表格a 表格c 我尝试连接这些表并执行如下更新,但查询超时: