#java #hibernate #jpa
#Ява #зимовать #jpa
Вопрос:
Я выполняю динамический веб-проект с использованием JPA в Java 17. У меня есть класс под названием UserEntity. На первой странице у меня есть кнопка регистрации, которая имеет следующую функциональность:
private void register(HttpServletRequest request, HttpServletResponse response) { String password = request.getParameter("register-pass"); String repeatPassword = request.getParameter("confirm-register-pass"); if (!password.equals(repeatPassword)) { request.setAttribute("error", "Password mismatch!"); RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp"); try { dispatcher.forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { JPAUserRepository repo = new JPAUserRepository(); String username = request.getParameter("register-user"); String email = request.getParameter("register-email"); UserEntity user = new UserEntity(username, password, email); if(repo.registerUser(user)) { HttpSession session = request.getSession(); session.setAttribute("user", user); try { response.sendRedirect("profile.jsp"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else { } } }
Функция registerUser из репозитория является:
public boolean registerUser(UserEntity user) { EntityManager em = getEntityManager(); try { em.getTransaction().begin(); em.persist(user); em.getTransaction().commit(); } catch (TransactionalException e) { em.getTransaction().rollback(); return false; } finally { em.close(); } return true; }
Это мое persistence.xml:
lt;?xml version="1.0" encoding="UTF-8"?gt; lt;persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"gt; lt;persistence-unit name="MetaVerse" transaction-type="RESOURCE_LOCAL"gt; lt;providergt; org.hibernate.jpa.HibernatePersistenceProvider lt;/providergt; lt;classgt;uni.fmi.masters.entities.UserEntitylt;/classgt; lt;classgt;uni.fmi.masters.entities.CommentEntitylt;/classgt; lt;propertiesgt; lt;property name="hibernate.archive.autodetection" value="class" /gt; lt;property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" /gt; lt;property name="hibernate.connection.driver_class" value="org.h2.Driver" /gt; lt;property name="hibernate.connection.url" value="jdbc:h2:~/MetaVerseDB"/gt; lt;property name="hibernate.connection.user" value="sa"/gt; lt;property name="hibernate.connection.password" value=""/gt; lt;property name="hibernate.show_sql" value="true"/gt; lt;property name="hibernate.flushMode" value="FLUSH_AUTO"/gt; lt;property name="hibernate.hbm2ddl.auto" value="update"/gt; lt;/propertiesgt; lt;/persistence-unitgt; lt;/persistencegt;
Когда я нажимаю «Зарегистрироваться», java.lang.Исключение ClassNotFoundException: javax.постоянство.Возникает ошибка TableGenerators. Я добавил в путь сборки hibernate-jpa-2.1-api-1.0.2.Final.jar. В javax.persistence есть класс TableGenerator. Должны ли это быть табличные генераторы?
Как я могу решить эту проблему?