Ebean:不是在这台服务器上注册的实体Bean吗?

时间:2016-08-26 09:07:35

标签: spring-boot ebean

我使用spring-boot和Ebean,我按照github的演示,pom是 https://github.com/ebean-orm-examples/example-springboot/blob/master/pom.xml

域:

import com.avaje.ebean.Model;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="udp_dmp_crowd")
public class Crowd extends Model{


    @Id
    Long crowd_id;

    String crowd_name;


    public String getCrowd_name() {
        return crowd_name;
    }

    public void setCrowd_name(String crowd_name) {
        this.crowd_name = crowd_name;
    }

    public Long getCrowd_id() {
        return crowd_id;
    }

    public void setCrowd_id(Long crowd_id) {
        this.crowd_id = crowd_id;
    }

}

服务:

package com.ump.dmp.service;

import com.avaje.ebean.EbeanServer;
import com.ump.dmp.domain.Crowd;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CrowdService {

    @Autowired
    EbeanServer server;

    public List<Crowd> getCrowd() {
        return server.find(Crowd.class).findList();
    }

}

控制器:

    @Controller
public class WelcomeController {

    @Autowired
    private CrowdService crowdService;

    @RequestMapping("/")
    String index(Model model) {

        System.out.println(">>>>>>>>>>>>>>> Crowd List <<<<<<<<<<<<<");
        List<Crowd> crowdList = crowdService.getCrowd();

        for (Crowd crowd : crowdList) {
             System.out.println(crowd.getCrowd_name());
        }

        model.addAttribute("now", LocalDateTime.now());
        return "index";
    }
}

使用命令:mvn spring-boot:运行启动应用程序,它的工作原理 但java -jar target / demo.jar它打破了:

javax.persistence.PersistenceException: com.ump.dmp.domain.Crowd is NOT an Entity Bean registered with this server?
at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:920)
at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:888)
at com.ump.dmp.service.CrowdService.getCrowd(CrowdService.java:21)
at com.ump.dmp.controller.WelcomeController.index(WelcomeController.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:107)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

3 个答案:

答案 0 :(得分:0)

目前正在使用带弹簧的Ebean,

我遇到了类似的问题并设法成功地解决了这个问题,我唯一要做的就是重建项目。

顺便说一下,您需要遵循以下几个步骤来使用Ebean:

  • 确保您已在IDE和构建管理器中启用了正确的Ebean Enhancement插件
  • 确保所有模型都已注释并扩展基础Ebean模型
  • 确保您用于创建Ebean服务器的配置知道您的实体模型在哪里,我通过将模型包明确添加到用于创建Ebean服务器的ServerConfig对象来实现此目的

关于最后一点,这是我用来检索和创建Ebean服务器的Utils类:

public class EbeanServerUtils {
    public final static String MODELS_PACKAGE="com.my.package.models";
    /**
     * Create and return an Ebean Server using the configurations contained in the File
     *
     * @param name       The name of the db. This is the name followed by the key datasource in the
     *                   properties file. Ex: datasource.NAME.username=test
     *                   usually the name is db
     * @param setDefault True if this server must be setted as the default server
     * @return
     */
    public static EbeanServer getServer(final String name, File propertiesFile, boolean setDefault) throws IOException {
        Properties properties = new Properties();
        properties.load(new FileInputStream(propertiesFile));
        ServerConfig config = getServerConfig(name,properties,setDefault);
        EbeanServer server = EbeanServerFactory.create(config);
        return server;
    }

    public static EbeanServer getServer(final String name, Properties properties, boolean setDefault) {
        ServerConfig config = getServerConfig(name,properties,setDefault);
        EbeanServer server = EbeanServerFactory.create(config);
        return server;
    }

    private static ServerConfig getServerConfig(final String name, Properties properties, boolean setDefault) {
        ServerConfig config = new ServerConfig();
        config.setName(name);
        config.loadFromProperties(properties);
        if (setDefault) {
            config.setDefaultServer(true);
            config.setRegister(true);
        }
        config.addPackage(MODELS_PACKAGE);
        return config;
    }
}

这是测试环境的典型配置文件

datasource.default=db
ebean.db.migration.run=false
ebean.migration.run=false
ebean.db.ddl.generate=false
ebean.db.ddl.run=false


datasource.db.username=username
datasource.db.password=myusernamepwd
datasource.db.databaseUrl=jdbc:h2:tcp://testmachine:9092//path/to/test/db;MODE=DB2;INIT=CREATE SCHEMA IF NOT EXISTS TESTSCHEMANAME;
datasource.db.databaseDriver=org.h2.Driver    
希望它对你有帮助, 问候

答案 1 :(得分:0)

我今天遇到了这个问题,我找到了解决这个问题的方法,你需要指定你的实体包,方法是在TRUE中添加以下一行

ebean.properties

明细here

答案 2 :(得分:0)

在ebeans.properties中添加实体包解决了这个问题。

ebean.search.packages=com.example.entities
相关问题