Hibernate DAO не может сохранить внешний ключ, используя раскрывающийся список с весенней загрузкой и тимелеафом, и я не хочу использовать jpa - PullRequest
0 голосов
/ 16 июня 2020

это мой html код, мой код всегда сохраняет null в столбцах внешнего ключа, пожалуйста, помогите и попробуйте исправить мой код, пожалуйста

<div th:if="${mode == 'MODE_NEW'}">
    <div class="container">
        <div class="row">
            <form autocomplete="off"
                  th:action="@{/admin/user-task/save}" 
                  th:object="${user_task}" method="post" class="form-horizontal"
                  role="form">
                <fieldset>
                    <!-- Form Name -->
                    <legend>User Task Assignment</legend>
                    <!-- Text input-->
                    <input type="hidden" name="id" th:field="${user_task.id}" />
                    <div class="form-group">
                        <label class="col-md-4 control-label">User</label>
                        <div class="col-md-4 text-left">
                            <select class="selectpicker" data-live-search="true"
                                    title="Select User" name="user" tabindex="-98">

                                <option th:each="user: ${users}" th:value="${user.id}"
                                        th:text="${user.name}"></option>
                            </select>
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-md-4 control-label">Task</label>
                        <div class="col-md-4 text-left">
                            <select class="selectpicker" data-live-search="true"
                                    title="Select Task" name="task" tabindex="-98">
                                <option th:each="task: ${tasks}" th:value="${task.id}"
                                        th:text="${task.name}"></option>
                            </select>
                        </div>
                    </div>

                    <!-- Button (Double) -->
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="submitButton"></label>
                        <div class="col-md-8">
                            <button type="submit" id="submitButton" name="submitButton"
                                    class="btn btn-success">Save</button>
                            <button type="button" class="btn btn-inverse"
                                    onclick="window.history.back()">Cancel</button>
                        </div>

                    </div>

                </fieldset>
            </form>
        </div>
    </div>
</div>

это мой контроллер, где я пробовал все, но это не сохранить напрямую, пожалуйста, предложите в моем коде

@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView saveUserTask(@Valid UserTask userTask,BindingResult bindingResult) throws UserTaskException {
    ModelAndView modelAndView = new ModelAndView("redirect:/admin/user-task/all");
    modelAndView.addObject("auth", getUser());
    modelAndView.addObject("control", getUser().getRole().getRole());
    User user=new User();
    user.getUserTask();
    Task task =new Task();
    task.getUserTask();
    userTask.setTask(task);
    userTask.setUser(user);
    userTaskService.save(userTask);
    return modelAndView;
}

это мой интерфейс dao, в котором вызывается метод

public interface UserTaskDao {

    public void save(UserTask user_task) throws UserTaskException;

}

это мой DaoImpl, в котором я использую сеанс гибернации

@Override
public void save(UserTask user_task) throws UserTaskException {

    Session session = this.sessionFactory.getCurrentSession();
    try {

    session.save(user_task);
    }catch(HibernateException e) {
        throw new UserTaskException("Error while saving user Task id and role id: "+e);
    }
}

это мой класс обслуживания

@Service
@Transactional
public class UserTaskService {

    @Autowired
    private final UserTaskDao userTaskDao; //userTaskDao

    public UserTaskService(UserTaskDao userTaskDao) {
        this.userTaskDao = userTaskDao;
    }               

    public void save(UserTask user_task) throws UserTaskException{
        userTaskDao.save(user_task);
    }       
}

My UserTask. java Class

@Entity(name="user_task")
public class UserTask implements Serializable {

    @Id
    @GeneratedValue
    private int id;

    @ManyToOne
    @JoinColumn(name = "USER_ID", referencedColumnName = "id")
    private User user;

    @ManyToOne
    @JoinColumn(name = "TASK_ID", referencedColumnName = "id")
    private Task task;


    public UserTask(UserTaskBean userTaskBean) {

    }

    public UserTask() {


    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }


    public Task getTask() {
        return task;
    }

    public void setTask(Task task) {
        this.task = task;
    }



}

In my User. java class

@OneToMany(mappedBy = "user")
private Set<UserTask> userTask = new HashSet<UserTask>();

In моя задача. java класс

@OneToMany(mappedBy = "task")
private Set<UserTask> userTask = new HashSet<UserTask>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...