Я пытаюсь добавить запись в таблицы но при этом выбивает ошибку
java.lang.NullPointerException
com.carsales.model.Role.addUser(Role.java:61)
com.carsales.model.User.addRole(User.java:55)
com.carsales.controller.UserController.addUser(UserController.java:65)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Мои Entity:
@Entity
@Table(name = "role")
public class Role implements Serializable {
@Id
@Column(name = "idrole", nullable = false,insertable = false,updatable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idRole;
@Basic
@Column(name = "rolename", nullable = false)
private String roleName;
@OneToMany(mappedBy = "role_user")
private Collection<User> users;
public Collection<User> getUsers() {
return users;
}
public void setUsers(Collection<User> users) {
this.users = users;
}
public Role() {
}
public Role(String roleName) {
this.roleName = roleName;
}
public int getIdRole() {
return idRole;
}
public void setIdRole(int idRole) {
this.idRole = idRole;
}
public String getRoleName() {
return this.roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public void addUser(User user) {
this.users.add(user);
}
}
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "iduser",nullable = false,insertable = false,updatable = false)
private int idUser;
@Basic
@Column(name = "username",nullable = false)
private String userName;
@Basic
@Column(name = "user_surname",nullable = false)
private String userSurName;
@Basic
@Column(name = "email",nullable = false)
private String Email;
@Basic
@Column(name="password",nullable = false)
private String Password;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "idrole", nullable = false,referencedColumnName =
"idrole")
private Role role_user;
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "country_idcountry", nullable = false)
private Country country;
@ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
@JoinColumn(name = "city_idcity",nullable = false,referencedColumnName =
"idcity")
private City city;
public void addCountry(Country country){
country.addUser(this);
this.setCountry(country);
}
public void addCity(City city){
city.addUser(this);
this.setCity(city);
}
public void addRole(Role role){
this.setRole_user(role);
role.addUser(this);
}
public User() {
}
public User(String userName, String userSurName, String email, String
password, Role role_user, Country country, City city) {
this.userName = userName;
this.userSurName = userSurName;
Email = email;
Password = password;
this.role_user = role_user;
this.country = country;
this.city = city;
}
public int getIdUser() {
return idUser;
}
public void setIdUser(int idUser) {
this.idUser = idUser;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserSurName() {
return userSurName;
}
public void setUserSurName(String userSurName) {
this.userSurName = userSurName;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
public Role getRole_user() {
return role_user;
}
public void setRole_user(Role role_user) {
this.role_user = role_user ;
}
public Country getCountry() {
return country;
}
public void setCountry(Country country) {
this.country = country;
}
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
public Collection<Bill> getBill() {
return bill;
}
public void setBill(Collection<Bill> bill) {
this.bill = bill;
}
@OneToMany(mappedBy = "user")
private Collection<Bill> bill;
}
Контроллер:
@Controller
public class UserController {
@Autowired
private UserDAO userDAO;
@Autowired
private CountryDAO countryDAO;
@Autowired
private CityDAO cityDAO;
@Autowired
private RoleDAO roleDAO;
@GetMapping("/userList")
public String getRoles(Model model){
model.addAttribute("users",userDAO.getAll());
return "/userList";
}
@GetMapping("/registration")
public String getAddUser( Model model){
model.addAttribute("roleList",roleDAO.getAll());
model.addAttribute("cityList",cityDAO.getAll());
model.addAttribute("countryList", countryDAO.getAll());
model.addAttribute("newUser",new User());
return "/userAdd";
}
//@PostMapping("/registration")
@RequestMapping(value = "/registration", method = RequestMethod.POST)
public String addUser(@ModelAttribute("newUser") User user,
@ModelAttribute("city") City city,
@ModelAttribute("country") Country country,
@ModelAttribute("role") Role role){
user.addRole(role);
user.addCity(city);
user.addCountry(country);
userDAO.add(user);
return "/userList";
}
}
Форма:
<form name = "newUser" class="center" action="/registration" method="post" >
<div>
<input type="text" name="userName" placeholder="Введіть ім'я:" required>
</div>
<div>
<input type="text" name="userSurName" placeholder="Введіть ім'я:" required>
</div>
<div>
<input type="text" name="email" placeholder="Введіть ім'я:" required>
</div>
<div>
<input type="text" name="password" placeholder="Введіть ім'я:" required>
</div>
<div>
<select id="roleId" name="roleId">
<option selected disabled value="">Роль</option>
<option value=1>admin</option>
<option value=2>user</option>
</select>
</div>
<div>
<select id="cityId" name="cityId">
<option selected disabled value="">Місто</option>
<c:forEach var="item" items="${cityList}">
<option value="${item.idCity}">${item.cityName}</option>
</c:forEach>
</select>
</div>
<div>
<select id="countryId" name="countryId">
<option selected disabled value="">Країна</option>
<c:forEach var="item" items="${countryList}">
<option value="${item.idCountry}">${item.countryName}</option>
</c:forEach>
</select>
</div>
<input type="submit">
</form>
Проблема в строчке:
user.addBill(bill);
И вероятнее всего Null'ом является user (которому неоткуда там взяться), так как в форме вы явно биндите bill:
<@sf.form action="/bill/new" method="post" modelAttribute="bill">
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не создается сам файл и запись в него не производитсяКак можно исправить?
Нужно проверить массив на возрастание, убывание, одинаковые поля и поля зигзаги(1,2,-1,3,4)Если код работает отдельными частями правильно, то почему-то...
Пишу свой домашний проект паралельно обучениюИспользую JDBC для работы с MySQL