【发布时间】:2020-08-15 16:40:47
【问题描述】:
我的学习项目有一个问题,例如“如果条件值为空,然后如果条件值字段为空”,例如我的代码遵循以下代码:
对于实体Users.java:
@Entity
public class Users {
private Long id;
private String employeeId;
private String fullName;
private String username;
private String password;
...
public Users() {
}
Some Code Setter and Getter....
}
对于实体Employee.java:
@Entity
public Class Employee {
private Long id;
private String employeeId;
private String fullName;
...
public Employee() {
}
Some Code Setter and Getter....
}
然后对于我的类服务,我有使用存储库插入数据员工的案例。如果我们在将数据插入表 Employee 之前有验证数据,我们需要检查 table users not null 然后在字段 employeeId 上应该为 null。我的代码如下:
对于存储库 UserRepo.java 和 EmployeeRepo.java :
@Repository
public interface EmployeeRepo extends CrudRepository<Employee, Long> {
}
@Repository
public interdace UsersRepo extends CrudRepository<Users, Long> {
@Transactional
@Modifying(clearAutomatically = true, flushAutomatically = true)
@Query("UPDATE Users u SET u.employeeId = :employeeId WHERE u.id = :id")
public void updateEmployeeIdUsers(@Param("id") Long id, @Param("employeeId") String employeeId);
}
对于服务UsersService.java:
@Service("usersService")
public class UsersService {
@Autowired
private UsersRepo repo;
public Optional<Users> findById(Long id) {
return repo.findById(id);
}
public void updateEmployeeIdUsers(Long id, String employeeId) {
repo.updateEmployeeIdUsers(id, employeeId);
}
}
对于服务EmployeeService.java:
@Service("employeeService")
public class EmployeeService {
@Autowired
private EmployeeRepo employeeRepo;
@Autowired
private UsersService userService;
public Employee insertEmployee(Employee employee) throws Exception {
Optional<Users> users = userService.findById(employee.getId());
Users userOptional = new Users(); **//on this my problem**
userOptional.getEmployeeId(); **//on this my problem**
if (!users.isPresent()) {
throw new Exception("User ID : "+ employee.getId() +" Not Founded");
}else if (!(userOptional == null)) { **//on this my problem**
throw new Exception("User employeID : "+ employee.getEmployeeId() +" Already Exist on Users");
}
String str1 = "TEST";
Long idUser = employee.getId();
userService.updateEmployeeIdUsers(idUser, str1);
return employeeRepo.save(employee);
}
}
在此代码上,如果 userOptional 始终为 NULL,则我们在 else 上有问题,我尝试调试以查看 employeeId 的值,只是我看到的始终为 Null。所以对我的问题有任何想法,因为我尝试某些案例总是因我的问题而失败。如果对我的问题有任何想法,请回复这些我的问题。非常感谢您回答我的问题。
【问题讨论】:
-
userOptionaloptional 为空,因为此对象为空。Users userOptional = new Users();在这种情况下,您只需创建空对象。我不明白你的代码的目标是什么。 -
你的代码总是会失败,因为
(!(userOptional == null))总是true。您创建了一个非空实例Users userOptional = new Users() -
@Seldo97 是的,没错,我刚刚发现。但它是如何工作的,因为我对这段代码的目标是: Optional
users = userService.findById(employee.getId());应该是获取值在哪里获取employeeId。那么如何让这个employeeId包含在else if中。 -
@dotore 如何从以下位置获取此employeeId:可选
users = userService.findById(employee.getId());包含在 else if 中 -
如果我理解正确,您想通过
Employee.id找到Users(不是Users实例的id)。如果你没有找到它 => 返回一个异常。如果你找到它但Users.employeeId不为空=> 返回异常"User employeID : "+ employee.getEmployeeId() +" Already Exist on Users"。这是正确的吗?
标签: java spring spring-boot entity field