如何通過 userServiceImpl 類更新農民的詳細資訊?我們不能使用farmerServiceImpl,因為我們必須將用戶名作為輸入而不是id,并且用戶名在farmerClass中不存在。
用戶等級:
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank(message = "Username is mandatory")
@Size(max = 20)
private String username;
@NotBlank(message = "Password is mandatory")
@Size(max = 50)
private String password;
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST})
@JoinTable(name = "user_roles",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
private Set<Role> roles;
@OneToOne(fetch = FetchType.LAZY,
cascade = {CascadeType.REMOVE,CascadeType.PERSIST},
mappedBy = "user")
@JsonIgnore
private Farmer farmer;
}
農民階層:
public class Farmer {
@Id
@GeneratedValue
private int farmerId;
@NotBlank
@Size(max = 120)
private String name;
@NotBlank
@Size(max = 120)
private String address;
@NotBlank
@Size(max = 12)
private String phoneNo;
// OneToOne unidirectional relationship
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id")
private User user;
}
用戶服務Impl.java:
@Override
public User updateUser(String username, User user) {
<<<How to update details of farmer class through this method>>>
return userRepository.save(userDetails);
}
uj5u.com熱心網友回復:
- 通過將用戶名作為引數傳遞來檢索用戶。
- 然后您可以對農夫類進行任何更改,因為它也是 User 類的成員。
- 保存用戶類,因為您使用的是級聯型別,因此對農夫所做的任何更改也將保存在農夫表中。
您的方法將如下所示:
public User updateUser(String username, Farmer farmer) {
User user = userRepository.findByUsername(username);
//If you want to update only a particular field of the Farmer class
user.getFarmer().setName("someName");
//Or if you are receiving a farmer object as method parameter then you can use something like this
Integer id = user.getFarmer().getFarmerId();
user.setFarmer(farmer);
user.getFarmer().setFarmerId(id);
//save the user class
userRepository.save(user);
}
uj5u.com熱心網友回復:
有兩種方法,您也可以使用farmerServiceImpl,因為您必須使用SQL查詢和如下所示的連接
@Qyery(value="select f.* from farmer f join user u on f.farmerid=u.id where u.username=:username", native query=true)
Optional<Farmer> getFarmerByUsername(@Param("username") String username)
您可以使用上面的查詢來檢索具有用戶名的農民,如下所示
public User updateUser(String username, Farmer farmer) {
Farmer farmer=farmerRepository.getFarmerByUsername("username");
farmer.setName("some name");
farmer.setAddress("address");
farmer.setPhoneNo("9999999999");
//Then just save the farmer object
farmerRepository.save(farmer);
}
另一種方法是使用 userRepository,如下所示:
public User updateUser(String username, Farmer farmer) {
User user = userRepository.findByUsername(username);
Farmer farmer=user.getFarmer();
farmer.setName("some name");
farmer.setAddress("address");
farmer.setPhoneNo("9999999999");
//Then just save the farmer object
farmerRepository.save(farmer);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511699.html
標籤:爪哇sql春天弹簧靴后端
上一篇:修復傾斜/傾斜的文本Opencv
下一篇:如何在我的專案中運行不同專案的servlet-filter而不使用spring@Component或@Bean注釋
