2014-01-29 2 views
3

더 큰 엔티티의 필드로 더 작은 클래스를 임베드하려고 시도하고 있으며, 과거에 연극에서 사용했던 것입니다! 2.1하지만 지금은 스키마 생성 중에 Ebean에서 오류가 발생합니다. 여기 Playframework에서 서브 클래 싱을 지원하지 않는다고 말하는 이유는 무엇입니까?

내 클래스 (공상 아주 간단 Nothing) 인 경우 :

@Embeddable 
public class Pricing implements Serializable { 

    private Long value; 

    private String currency; 

    //getters and setters 
} 

나는 이런 식을 포함하는 것을 시도하고있다 :

@Entity 
public class MyEntity extends Model { 

    @Id 
    @GeneratedValue 
    private Long id; 

    @Embedded 
    private Pricing priceProposed; 

    //getters and setters 
} 

이 무엇을 달성하려고하는 것은 보이는 테이블 이 같은 것

---------------------------------------------------- 
| id | priceProposed.value | priceProposed.currency| 
---------------------------------------------------- 
| 1 | 200     | USD     | 
| 2 | 1200000    | JPY     | 
---------------------------------------------------- 

내가보기에 어려운 일은 없습니다. 그러나 서브 클래 싱이 더 이상 지원되지 않는다는 것을 언급하는 다음 오류가 나타납니다. 그러나 나는 이것이 subClassing으로 자격이 있다는 것을 믿지 않습니까, 아니면 완전히 잘못 되었습니까?

javax.persistence.PersistenceException: Entity type class models.product.Pricing is not an enhanced entity bean. Subclassing is not longer supported in Ebean 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.checkSubclass(BeanDescriptorManager.java:1482) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1433) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1150) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1070) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createEmbedded(BeanDescriptorManager.java:475) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readEmbeddedDeployment(BeanDescriptorManager.java:498) 
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:234) 
    at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:114) 
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:204) 
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:65) 
    at com.avaje.ebean.EbeanServerFactory.create(EbeanServerFactory.java:58) 
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:79) 
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:88) 
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:88) 
    at scala.collection.immutable.List.foreach(List.scala:318) 
    at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:88) 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:88) 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:88) 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) 
    at play.api.Play$.start(Play.scala:87) 
    at play.api.Play.start(Play.scala) 
    at play.test.Helpers.start(Helpers.java:359) 
    at framework.AbstractPlayApplicationTest.setup(AbstractPlayApplicationTest.java:19) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

누군가 무슨 일이 일어 났는지 말해 줄 수 있습니까? 이것과 관련된 것은 무엇입니까? 누군가 내가 뭔가 잘못하고있는 것을보고 있는가? (내가 마지막으로 Ebean + Play! 프로젝트를 시작한 이래로 1 년이 되었기 때문에 나는 정말 바보 같은 것을 잊어 버릴 수도있다)?

답변

0

@Entity 주석을 사용하는 경우 Ebean 모델 클래스를 확장 할 필요가 없습니다.

관련 문제