Использование MySQL вместо H2 - PullRequest
0 голосов
/ 22 января 2019

Когда я пытаюсь протестировать простой сервис REST, чтобы вывести количество пользователей на веб-странице, это выдает много ошибок. Я использую MySQL и, тестируя JPA Query в консоли, получаю правильный ответ. Но когда я пытаюсь с веб-страницы, это дает следующие ошибки:

01: 07: 43,647 WARN [org.jboss.as.weld] (задание по умолчанию-1) WFLYWELD0052: Использование загрузчика классов развертывания для загрузки прокси-классов для модуля org.jboss.jts. Пакетно-приватный доступ не будет работать. Чтобы это исправить модуль должен объявить зависимости от [org.jboss.weld.core, org.jboss.weld.spi] 01: 07: 43,731 INFO [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (по умолчанию задача-1) HHH000397: использование ASTQueryTranslatorFactory 01: 07: 43,801 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (задание по умолчанию-1) Ошибка SQL: 42102, состояние SQLState: 42S02 01: 07: 43,802 ОШИБКА [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (задание по умолчанию-1) Таблица "ПОЛЬЗОВАТЕЛИ" не найдена; Оператор SQL: выберите количество (users0_.id) как col_0_0_ от пользователей users0_ [42102-193] 01: 07: 43,807 ОШИБКА [io.undertow.request] (задание по умолчанию-1) UT005023: обработка исключений запрос к /amd-project-1.0/api/users/count: org.jboss.resteasy.spi.UnhandledException: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: не удалось подготовить заявление в org.jboss.resteasy.core.ExceptionHandler.handleApplicationException (ExceptionHandler.java:78) в org.jboss.resteasy.core.ExceptionHandler.handleException (ExceptionHandler.java:222) в org.jboss.resteasy.core.SynchronousDispatcher.writeException (SynchronousDispatcher.java:193) в org.jboss.resteasy.core.SynchronousDispatcher.invoke (SynchronousDispatcher.java:455) в org.jboss.resteasy.core.SynchronousDispatcher.lambda $ взывать $ 4 (SynchronousDispatcher.java:229) в org.jboss.resteasy.core.SynchronousDispatcher.lambda $ препроцессировать $ 0 (SynchronousDispatcher.java:135) в org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter (PreMatchContainerRequestContext.java:355) в org.jboss.resteasy.core.SynchronousDispatcher.preprocess (SynchronousDispatcher.java:138) в org.jboss.resteasy.core.SynchronousDispatcher.invoke (SynchronousDispatcher.java:215) в org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service (ServletContainerDispatcher.java:227) в org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service (HttpServletDispatcher.java:56) в org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service (HttpServletDispatcher.java:51) в javax.servlet.http.HttpServlet.service (HttpServlet.java:791) в io.undertow.servlet.handlers.ServletHandler.handleRequest (ServletHandler.java:74) в io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter (FilterHandler.java:129) в io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter (SpanFinishingFilter.java:55) в io.undertow.servlet.core.ManagedFilter.doFilter (ManagedFilter.java:61) в io.undertow.servlet.handlers.FilterHandler $ FilterChainImpl.doFilter (FilterHandler.java:131) в io.undertow.servlet.handlers.FilterHandler.handleRequest (FilterHandler.java:84) в io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest (ServletSecurityRoleHandler.java:62) в io.undertow.servlet.handlers.ServletChain $ 1.handleRequest (ServletChain.java:68) в io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest (ServletDispatchingHandler.java:36) в org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest (SecurityContextAssociationHandler.java:78) в io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:43) в io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest (SSLInformationAssociationHandler.java:132) вio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest (ServletAuthenticationCallHandler.java:57) в io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:43) в io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest (AbstractConfidentialityHandler.java:46) в io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest (ServletConfidentialityConstraintHandler.java:64) в io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest (AuthenticationMechanismsHandler.java:60) в io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest (CachedAuthenticatedSessionHandler.java:77) в io.undertow.security.handlers.NotificationReceiverHandler.handleRequest (NotificationReceiverHandler.java:50) в io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest (AbstractSecurityContextAssociationHandler.java:43) в io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:43) в org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest (JACCContextIdHandler.java:61) в io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:43) в org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest (GlobalRequestControllerHandler.java:68) в io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:43) в io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest (ServletInitialHandler.java:292) в io.undertow.servlet.handlers.ServletInitialHandler.access $ 100 (ServletInitialHandler.java:81) в io.undertow.servlet.handlers.ServletInitialHandler $ 2.call (ServletInitialHandler.java:138) в io.undertow.servlet.handlers.ServletInitialHandler $ 2.call (ServletInitialHandler.java:135) в io.undertow.servlet.core.ServletRequestContextThreadSetupAction $ 1.call (ServletRequestContextThreadSetupAction.java:48) в io.undertow.servlet.core.ContextClassLoaderSetupAction $ 1.call (ContextClassLoaderSetupAction.java:43) в org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda $ создать $ 0 (SecurityContextThreadSetupAction.java:105) в org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda $ создать $ 0 (UndertowDeploymentInfoService.java:1502) в org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda $ создать $ 0 (UndertowDeploymentInfoService.java:1502) в org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda $ создать $ 0 (UndertowDeploymentInfoService.java:1502) в org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda $ создать $ 0 (UndertowDeploymentInfoService.java:1502) в org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda $ создать $ 0 (UndertowDeploymentInfoService.java:1502) в io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest (ServletInitialHandler.java:272) в io.undertow.servlet.handlers.ServletInitialHandler.access $ 000 (ServletInitialHandler.java:81) в io.undertow.servlet.handlers.ServletInitialHandler $ 1.handleRequest (ServletInitialHandler.java:104) в io.undertow.server.Connectors.executeRootHandler (Connectors.java:360) в io.undertow.server.HttpServerExchange $ 1.run (HttpServerExchange.java:830) в org.jboss.threads.ContextClassLoaderSavingRunnable.run (ContextClassLoaderSavingRunnable.java:35) в org.jboss.threads.EnhancedQueueExecutor.safeRun (EnhancedQueueExecutor.java:1985) в org.jboss.threads.EnhancedQueueExecutor $ ThreadBody.doRunTask (EnhancedQueueExecutor.java:1487) вorg.jboss.threads.EnhancedQueueExecutor $ ThreadBody.run (EnhancedQueueExecutor.java:1378) at java.lang.Thread.run (Thread.java:748) Причина: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: не удалось подготовить заявление в org.hibernate.internal.ExceptionConverterImpl.convert (ExceptionConverterImpl.java:154) в org.hibernate.internal.ExceptionConverterImpl.convert (ExceptionConverterImpl.java:181) в org.hibernate.query.internal.AbstractProducedQuery.list (AbstractProducedQuery.java:1514) в org.hibernate.query.internal.AbstractProducedQuery.getSingleResult (AbstractProducedQuery.java:1553) в org.jboss.as.jpa.container.TypedQueryNonTxInvocationDetacher.getSingleResult (TypedQueryNonTxInvocationDetacher.java:69) в com.oraldveizi.amdproject.repository.UsersRepository.countAll (UsersRepository.java:36) в com.oraldveizi.amdproject.repository.UsersRepository $ Proxy $ _ $$ WeldSubclass.countAll $$ супер (не известно Источник) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal (TerminalAroundInvokeInvocationContext.java:51) в org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed (AroundInvokeInvocationContext.java:78) в com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.invokeInNoTx (TransactionalInterceptorBase.java:195) в com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorSupports.doIntercept (TransactionalInterceptorSupports.java:53) в com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.intercept (TransactionalInterceptorBase.java:88) в com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorSupports.intercept (TransactionalInterceptorSupports.java:47) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation $ SimpleMethodInvocation.invoke (SimpleInterceptorInvocation.java:73) в org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke (InterceptorMethodHandler.java:84) в org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception (InterceptorMethodHandler.java:72) в org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke (InterceptorMethodHandler.java:56) в org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke (CombinedInterceptorAndDecoratorStackMethodHandler.java:79) в org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke (CombinedInterceptorAndDecoratorStackMethodHandler.java:68) в com.oraldveizi.amdproject.repository.UsersRepository $ Proxy $ $$ WeldSubclass.countAll (Неизвестно Источник) в com.oraldveizi.amdproject.endpoints.UsersEndpoint.countUsers (UsersEndpoint.java:41) в com.oraldveizi.amdproject.endpoints.UsersEndpoint $ Proxy $ $$ WeldClientProxy.countUsers (Неизвестно Источник) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.jboss.resteasy.core.MethodInjectorImpl.invoke (MethodInjectorImpl.java:139) вorg.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget (ResourceMethodInvoker.java:509) по адресу org.jboss.resteasy.core.ResourceMethodInvoker.invoke.nT.injhojjjj.jb)invokeOnTarget $ 0 (ResourceMethodInvoker.java:363) по адресу org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter (PreMatchContainerRequestContext.java:355) по адресу org.jboss.resteasy.Met.org.jboss.resteasy.core.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:337) в org.jboss.resteasy.core.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:310.res.in.SynchronousDispatcher.java:439) ... еще 56. Причина: org.hibernate.exception.SQLGrammarException: не удалось подготовить оператор в org.hibernate.exception.internal.SQLStateConversionDelegate.convert (SQLStateConversionDelegate.java:106) вorg.hibernate.exception.internal.StandardSQLExceptionConverter.convert (StandardSQLExceptionConverter.java:42) в org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert (SqlExceptionHelper.java:113) в org.INTER.JBERStatementPreparerImpl. $ Statement.в org.hibernate.loader.Loader.executeQueryStatement (Loader.java:1914) в org.hibernate.loader.Loader.executeQueryStatement (Loader.java:1892) в org.hibernate.loader.Loader.doQuery (Loader.java:9)) в org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections (Loader.java:340) в org.hibernate.loader.Loader.doList (Loader.java:2689) в org.hibernate.loader.Loader.doList: Loader.jav:2672) в org.hibernate.loader.Loader.listIgnoreQueryCache (Loader.java:2506) в org.hibernate.loader.Loader.list (Loader.java:2501) в org.hibernate.loader.hql.QueryLoader.list (QueryLoader.java:504) в org.hibernate.hql.internal.ast.QueryTranslatorImpl.list (QueryTranslatorImpl.Java: 395) в org.hibernate.engine.query.spi.HQLQueryPlan.performList (HQLQueryPlan.java:220) в org.hibernate.internal.SessionImpl.list (SessionImpl.java:1508) в org.hibernate.query.internal.AbstractProducedQuery.doList (AbstractProducedQuery.java:1537) в org.hibernate.query.internal.AbstractProducedQuery.list (AbstractProducedQuery.java:1505) ... еще 96 причин: org.h2.jdbc.JdbcSQLException: таблица "USERS"не найдено;Оператор SQL: выберите количество (users0 .id) в качестве col_0_0_ для пользователей users0_ [42102-193] в org.h2.message.DbException.getJdbcSQLException (DbException.java:345) в org.h2.message.DbException.get(DbException.java:179) в org.h2.message.DbException.get (DbException.java:155) в org.h2.command.Parser.readTableOrView (Parser.java:5389) в org.h2.command.Parser.readTableFilter (Parser.java:1257) в org.h2.command.Parser.parseSelectSimpleFromPart (Parser.java:1897) в org.h2.command.Parser.parseSelectSimple (Parser.java:2045) в org.h2.command.Parser.parseSelectSub (Parser.java:1891) в org.h2.command.Parser.parseSelectUnion (Parser.java:1709) в org.h2.command.Parser.parseSelect (Parser.java:1697) в org.h2.command.Parser.parsePrepared (Parser.java:445) в org.h2.command.Parser.parse (Parser.java:317) в org.h2.command.Parser.parse (Parser.java:289) в org.h2.command.Parser.prepareCommand (Parser.java:254) в org.h2.engine.Session.prepareLocal (Session.java:561) в org.h2.engine.Session.prepareCommand (Session.java:502) в org.h2.jdbc.JdbcConnection.prepareCommand (JdbcConnection.java:1203) вorg.h2.jdbc.JdbcPreparedStatement. (JdbcPreparedStatement.java:73) в org.h2.jdbc.JdbcConnection.prepareStatement (JdbcConnection.java:676) в org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.doPrepareStatement (BaseWrapperManagedConnection.java:758) в org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.prepareStatement (BaseWrapperManagedConnection.java:744) в org.jboss.jca.adapters.jdbc.WrappedConnection.prepareStatement (WrappedConnection.java:459) в org.hibernate.engine.jdbc.internal.StatementPreparerImpl $ 5.doPrepare (StatementPreparerImpl.java:146) в org.hibernate.engine.jdbc.internal.StatementPreparerImpl $ StatementPreparationTemplate.prepareStatement (StatementPreparerImpl.java:172)

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.transaction.Transactional;

import java.util.List;

import static javax.transaction.Transactional.TxType.REQUIRED;
import static javax.transaction.Transactional.TxType.SUPPORTS;

@Transactional(SUPPORTS)
public class UsersRepository implements EntityInterface<Users, Long> {

@PersistenceContext(name = "projectPU")
private EntityManager entityManager;


public Users find(Long id) {
    return entityManager.find(Users.class, id);
}

public List<Users> findAll() {
    Query query = entityManager.createNativeQuery("SELECT u FROM Users u ORDER BY u.username DESC");
    List<Users> usersList = query.getResultList();
    return usersList;
}


public Long countAll() {
    TypedQuery<Long> query = entityManager.createQuery(
            "SELECT COUNT(u) FROM Users u", Long.class);
    return query.getSingleResult();
}

@Transactional(REQUIRED)
public Users create(Users users) {
    entityManager.persist(users);
    return users;
}

public void delete(Long id) {
    entityManager.remove(entityManager.getReference(Users.class, id));

}



}

Это мой UserRepository.java и это UserEndpoint.java

import javax.inject.Inject;

import javax.transaction.Transactional;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import java.util.List;

import static javax.ws.rs.core.MediaType.TEXT_PLAIN;

@Path("/users")
public class UsersEndpoint {

@Inject
private UsersRepository usersRepository;

public Users find(Long id) {
    return usersRepository.find(id);
}

@GET
@Produces("text/html")
public Response getUsers() {
    List<Users> usersList =  usersRepository.findAll();

    if(usersList.size() == 0)
        return Response.status(Response.Status.NO_CONTENT).build();
    return Response.ok(usersList).build();
}

@GET
@Path("/count")
@Produces(TEXT_PLAIN)
public Response countUsers() {
    Long numberOfUsers = usersRepository.countAll();
    if(numberOfUsers == 0)
        return Response.status(Response.Status.NO_CONTENT).build();
    return Response.ok(numberOfUsers).build();
}

У меня нет hibernate.cfg.xml, потому что я вставил источник данных из меню конфигурации. Как я могу перейти на использование MySQL вместо H2?

...