我刚开始使用Spring数据休息,所以即使这可能是一个非常基本的事情,如果有人能指出我犯的错误或指向正确的方向,我会很感激。
我有一个包含员工实体的EmployeeRepository。
public interface EmployeeRepository extends CrudRepository<Employee,Long>{
@Query("select emp from Employee emp where emp.employeeId=?1")
Employee findById(String employeeId);
@Query("select emp from Employee emp where emp.officialEmailId = ?1")
Employee findByOfficialEmailId(String officialEmailId);
}
以下是员工实体迁移的一部分。
public class Employee extends AbstractAuditingEntity{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Long version;
@Size(min = 3, max = 30)
@NotBlank
@Column(unique=true,nullable=false)
private String employeeId;
@Size(min=3,max = 25)
@NotBlank
@Field(index=Index.YES, analyze=Analyze.NO, store=Store.YES)
private String lastName;
@Size(min=3,max = 25)
@Field(index=Index.YES, analyze=Analyze.NO, store=Store.YES)
@NotBlank
private String firstName;
@Size(min=3,max = 25)
@Field(index=Index.YES, analyze=Analyze.NO, store=Store.YES)
private String middleName;
}
在我的服务类中,我需要根据条件获取员工实体列表,并为所有这些设置公共属性。我尝试了它并且它不起作用所以我尝试了更简单的东西,我试图尝试将所有员工的中间名设置为公共值并将其保存到数据库。这是它的代码
@Transactional
public void tempFunction(){
Iterable<Employee> empList = employeeRepository.findAll();
for(Employee e : empList){
e.setMiddleName("newMiddleName");
employeeRepository.save(e);
}
}
我得到以下异常 2016-02-20 17:59:08.545 ERROR 533 --- [nio-8080-exec-1] oaccC [。[。[/]。[dispatcherServlet] ]:Servlet [dispatcherServlet]的Servlet.service()与path []的上下文引发异常[请求处理失败;嵌套异常是org.springframework.transaction.TransactionSystemException:无法提交JPA事务;嵌套异常是javax.persistence.RollbackException:使用根本原因提交事务时出错 java.lang.NullPointerException:null
堆栈跟踪显示了NullPointerException的根本原因,我知道在我从控制器或服务中调用此代码的地方附近不存在。如果我的代码中有任何错误,有人可以指出,提前谢谢。