2015-10-13 163 views
3

我正在學習如何在Play框架中使用Ebean ORM,但遇到了錯誤。 我有很多類,但問題在於這兩個類。Play Framework 2.4 Ebean

StockItem類:

import com.avaje.ebean.Model; 
import com.google.inject.Inject; 

import javax.persistence.*; 

@Entity 
public class StockItem extends Model{ 
    @Id 
    private Long id; 

/* 

    @ManyToOne 
    private Warehouse warehouse; 
*/ 

    @ManyToOne 
    private Product product; 

    private Long quantity; 

    public static Finder<Long,StockItem> find = new Finder<>(StockItem.class); 

    public StockItem(){ 
     //left blank 
    } 

    public String toString() { 
     return String.format("%d %s",quantity,product); 
    } 

///gettters and setters 

} 

倉庫類:

import com.avaje.ebean.Model; 
import javax.persistence.Entity; 

@Entity 
public class Warehouse extends Model{ 

    private String name; 
/* 

    @OneToMany(mappedBy="warehouse") 
    private List<StockItem> stock; // = new ArrayList<>(); 
*/ 

    private static Finder<Long,Warehouse> find = new Finder<>(Warehouse.class); 


    public Warehouse(){ 
     //left blank 
    } 
///gettters and setters 

} 

如果我取消了多行註釋,我得到這個錯誤:

CreationException: Unable to create injector, see the following errors: 

1) Error injecting constructor, java.lang.NullPointerException 
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:36) 
    at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:33) 
    while locating play.db.ebean.EbeanDynamicEvolutions 
    at play.db.ebean.EbeanModule.bindings(EbeanModule.java:23): 
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1) 
    while locating play.api.db.evolutions.DynamicEvolutions 
Caused by: java.lang.NullPointerException 
    at com.avaje.ebeaninternal.server.persist.dmlbind.BindableAssocOne.dmlAppend(BindableAssocOne.java:38) 
    at com.avaje.ebeaninternal.server.persist.dmlbind.BindableList.dmlAppend(BindableList.java:36) 
    at com.avaje.ebeaninternal.server.persist.dml.UpdateMeta.genSql(UpdateMeta.java:168) 
    at com.avaje.ebeaninternal.server.persist.dml.UpdateMeta.<init>(UpdateMeta.java:46) 
    at com.avaje.ebeaninternal.server.persist.dml.MetaFactory.createUpdate(MetaFactory.java:71) 
    at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersisterFactory.create(DmlBeanPersisterFactory.java:25) 
    at com.avaje.ebeaninternal.server.deploy.BeanManagerFactory.create(BeanManagerFactory.java:22) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.initialiseAll(BeanDescriptorManager.java:347) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:233) 
    at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:119) 
    at com.avaje.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:142) 
    at com.avaje.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:38) 
    at com.avaje.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:81) 
    at com.avaje.ebean.EbeanServerFactory.create(EbeanServerFactory.java:66) 
    at play.db.ebean.EbeanDynamicEvolutions.start(EbeanDynamicEvolutions.java:53) 
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:39) 
    at play.db.ebean.EbeanDynamicEvolutions$$FastClassByGuice$$52c94231.newInstance(<generated>) 
    at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40) 
    at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61) 
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105) 
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) 
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) 
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) 
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) 
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) 
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205) 
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) 
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199) 
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110) 
    at com.google.inject.Guice.createInjector(Guice.java:96) 
    at com.google.inject.Guice.createInjector(Guice.java:73) 
    at com.google.inject.Guice.createInjector(Guice.java:62) 
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:126) 
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:93) 
    at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:153) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:150) 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:150) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:121) 
    at scala.Option.map(Option.scala:146) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:121) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:119) 
    at scala.util.Success.flatMap(Try.scala:230) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:119) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:111) 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) 
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(Unknown Source) 
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) 
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) 
    at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) 
    at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) 

2) Error injecting constructor, java.lang.NullPointerException 
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:36) 
    at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:33) 
    while locating play.db.ebean.EbeanDynamicEvolutions 
    at play.db.ebean.EbeanModule.bindings(EbeanModule.java:23): 
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1) 
    while locating play.api.db.evolutions.DynamicEvolutions 
    while locating play.api.db.evolutions.ApplicationEvolutionsProvider 
    at play.api.db.evolutions.EvolutionsModule.bindings(EvolutionsModule.scala:22): 
Binding(class play.api.db.evolutions.ApplicationEvolutions to ProviderConstructionTarget(class play.api.db.evolutions.ApplicationEvolutionsProvider) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1) 
    while locating play.api.db.evolutions.ApplicationEvolutions 
Caused by: java.lang.NullPointerException 
    at com.avaje.ebeaninternal.server.persist.dmlbind.BindableAssocOne.dmlAppend(BindableAssocOne.java:38) 
    at com.avaje.ebeaninternal.server.persist.dmlbind.BindableList.dmlAppend(BindableList.java:36) 
    at com.avaje.ebeaninternal.server.persist.dml.UpdateMeta.genSql(UpdateMeta.java:168) 
    at com.avaje.ebeaninternal.server.persist.dml.UpdateMeta.<init>(UpdateMeta.java:46) 
    at com.avaje.ebeaninternal.server.persist.dml.MetaFactory.createUpdate(MetaFactory.java:71) 
    at com.avaje.ebeaninternal.server.persist.dml.DmlBeanPersisterFactory.create(DmlBeanPersisterFactory.java:25) 
    at com.avaje.ebeaninternal.server.deploy.BeanManagerFactory.create(BeanManagerFactory.java:22) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.initialiseAll(BeanDescriptorManager.java:347) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:233) 
    at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:119) 
    at com.avaje.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:142) 
    at com.avaje.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:38) 
    at com.avaje.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:81) 
    at com.avaje.ebean.EbeanServerFactory.create(EbeanServerFactory.java:66) 
    at play.db.ebean.EbeanDynamicEvolutions.start(EbeanDynamicEvolutions.java:53) 
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:39) 
    at play.db.ebean.EbeanDynamicEvolutions$$FastClassByGuice$$52c94231.newInstance(<generated>) 
    at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40) 
    at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61) 
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105) 
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) 
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) 
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) 
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) 
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) 
    at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) 
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) 
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051) 
    at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321) 
    at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:316) 
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get$lzycompute(EvolutionsModule.scala:53) 
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:53) 
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:44) 
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) 
    at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72) 
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) 
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) 
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) 
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205) 
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) 
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199) 
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110) 
    at com.google.inject.Guice.createInjector(Guice.java:96) 
    at com.google.inject.Guice.createInjector(Guice.java:73) 
    at com.google.inject.Guice.createInjector(Guice.java:62) 
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:126) 
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:93) 
    at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:153) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:150) 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:150) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:121) 
    at scala.Option.map(Option.scala:146) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:121) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:119) 
    at scala.util.Success.flatMap(Try.scala:230) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:119) 
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:111) 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) 
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(Unknown Source) 
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) 
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) 
    at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) 
    at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) 

2 errors 

任何幫助將不勝感激。

回答

7

我找到了解決方案。將其添加爲具有相同問題的其他人。

我沒有在我的倉庫類中添加一個id變量。

將以下內容添加到倉庫類中。

@Id 
private Long id; 
+0

是的,它的工作原理。即使父類已將其作爲遺產的一部分,您也必須添加該標識。 – MightyMouse