我目前有两个表格:劳动力和员工。劳动力表是所有提交简历加入公司的潜在员工的集合。Employees表是Workforce表中实际雇用的人员的集合。
环境:1。Eclipse 2。Java(J2EE)3。Maven 4。Spring5。JPA(JpaRepository)
为简洁起见,我将坚持使用与数据提取和数据插入另一个表有关的文件。
由于两个表的相似性,Workforce表中的许多字段将与Employees表中的字段相似:
如果选择了劳动力中的人员,则有一个名为“isHired”的布尔值,其值为1。每周,Workforce表中“isHired”的值为“1”的人员将从Workforce表中提取并插入员工表。
常规SQL查询如下所示(在没有Spring HPQL约束的常规IDE中工作):
INSERT INTO Employees (firstName, lastName, dept, phone)
SELECT emp_firstName, emp_lastName, emp_dept, emp_phone
FROM Workforce WHERE isHired = 1
这工作顺利,但我们谈论的是JPA,所以这就是我所做的:
在存储库中,该过程分为两项:1)从一个表(Workforce)中提取数据,然后2)将提取的数据插入另一个表(员工)
WorkforceRepository.java
package com.example.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.example.entities.Workforce;
@Repository
public interface WorkforceRepository extends JpaRepository<Workforce, Long> {
@Query("SELECT new Workforce("
+ "w.workforceid, "
+ "w.firstName, "
+ "w.lastName, "
+ "w.dept, "
+ "w.phone) "
+ "FROM Workforce w WHERE isHired = 1")
public List<Workforce> getNewHires();
}
劳动力JAVA
package com.example.entities;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Generatedvalue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table
@Entity
@Table(name = "WORKFORCE")
public class Workforce implements Serializable {
private static final long serialVersionUID = 1L;
public Workforce() {
}
public Workforce(long workforceid, String firstName, lastName, dept, phone) {
this.workforceid = workforceid;
this.firstName = firstName;
this.lastName = lastName;
this.dept = dept;
this.phone = phone;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="workforceid")
private long workforceid;
@Column(name="firstName)
private String firstName;
// OTHER DECLARATIONS REMOVED FOR BREVITY
// GETTERS AND SETTERS REMOVED FOR BREVITY
}
注:我遗漏了该员工。java和EmployeesRepository。java为简洁起见,它们几乎相同,除了employeeid(Employee表的主键)之外,其他列也完全相同。constructor类只包含同样的四列。
我有大量可以工作的CRUD操作,而这些操作只发生在同一个表中。然而,我想这样做:
员工控制员。JAVA
// IMPORTS REMOVED FOR BREVITY
List<Workforce> retrievedRisks = Workforce.getNewHires();
for (Workforce w: retrievedRisks)
Employees.saveAndFlush(w);
// MISC CODE REMOVED FOR BREVITY
我收到的错误当然如下:
Type mismatch: cannot convert from element type Workforce to Employees
有人知道如何使用JpaRepository从一个POJO对象提取数据并将其插入另一个POJO对象吗?
如果员工和劳动力几乎相同,则可以使用hibernate继承。添加复制构造函数和重新保存实体。但如果您有不同的约束条件或id生成器(可能是员工已经有工作人员id的情况),则可能没有帮助。简单的情况是,只需从劳动力中创建员工,并通过
employee = new Employees(w.firstName, w.lastName, w.dept, w.phone);
Employees.saveAndFlush(employee);
在这种情况下,您将创建新员工,存储库将正确保存。也许在保存新员工(员工的副本)后,您应该删除旧员工
我有以下数据结构: <代码>地图 我想从这个复杂的 Map 对象中提取它的值(它本身是另一个字符串 Map)。我目前正在这样做: 上面的实现给了我一个新的Map对象,由于外部循环,它正在迭代。似乎我错过了什么。 如何从复杂的 Map 对象中提取内部 Map 对象? 编辑: 回应AlexWien的评论 原始数据结构: 原始数据结构背后的原因是为一对id(ID1和ID2)存储一个值。ID1和ID2可以
如何从事件处理程序中的对象打印多个键? 这里是链接到我的代码-https://codesandbox.io/s/suspicious-hamilton-erkqv 在第35行,我用对象“x”调用事件处理程序ChangeName。我可以打印一个名为“name”(x.name)的键。我如何打印x对象的所有3个道具(名称、id、类型)?? 尝试将x转换为object.keys(x)的数组,但当我循环通过
问题内容: 我对Json文件很陌生。如果我有一个包含多个json对象的json文件,例如: 我想将所有“时间戳记”和“有用性”提取到一个数据帧中: 有谁知道解决此类问题的一般方法? 问题答案: 使用json数组,格式为: 然后将其导入到您的python代码中 现在,数据的内容是一个带有字典的数组,字典表示每个元素。 您可以轻松访问它,即:
我正在使用Spring,但对它的所有功能并不熟悉。寻找将字段从一个Java对象实例复制到另一个对象实例的好方法。我已经看到了如何将属性从一个Java bean复制到另一个Java bean?但我要找的是更具体的,所以下面是详细信息: 假设我有两个类P的实例,源
我有一个输入超文本标记语言表单,我插入如下值: 然后,即使插入表单的数据在另一个表中也有一个ID; 例如id of data1是1, id of data2是2,... 现在,我将它们的值形式如下: 所以我用“,”输入数据,然后我不能使用: > 如何插入从data1、data2、,。。。将MySQL数据库作为数组,如id1、id2、,。。。
问题内容: 我需要将数据从一个数据库迁移到另一个数据库,两者都在同一本地系统上。 表和列的名称不同,我不能从旧数据库迁移所有列,因此 对我不起作用。 但我只有一个 我的查询中有什么错误,我该如何解决? 提前致谢 问题答案: 您的查询应如下所示: 更新 由于这个答案的关注程度超出了我的预期,因此我应该扩展这个答案。首先,从答案本身看可能并不明显,但各列不必具有相同的名称。因此,以下操作也将起作用(假