java – Play Framework 2.4 Ebean
•
Java
I was learning how to use ebean orm in the play framework, but I encountered an error
Stockitem class:
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 }
Warehouse type:
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 }
If I uncomment multiline comments, I receive this error:
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
Any help would be appreciated
Solution
I found a solution Add it for others who have the same problem
I did not add an ID variable to the warehouse class
Add the following to the warehouse class
@Id private Long id;
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码