【トラブル】【Java】 Ebean を使った際のトラブル

はじめに

 * Ebean をPlay Framework上ではなく、単体で使用した際のトラブルシューティングを載せておく

■ 実行時エラー「PersistenceException:xxxxx is NOT an Entity Bean registered with this server?」が表示される

エラー内容

Exception in thread "main" javax.persistence.PersistenceException:xxxxx is NOT an Entity Bean registered with this server?
	at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:890)
	at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:884)
	at com.dk.sample.ebean.Main.main(Main.java:41)

解決策

 * モデルに「@Entity」を付ける
修正前
public class Person extends Model {

  public String id;

  // 略
}
修正後
@Entity
@Table(name = "person")
public class Person extends Model {
  @Id
  @Column(name = "id")
  public String id;

  // 略
}

■ 実行時エラー「IllegalStateException: Bean class xxxxx is not enhanced?」が表示される

エラー内容

Exception in thread "main" java.lang.IllegalStateException: Bean class xxxxx is not enhanced?
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1344)
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1210)
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1132)
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:636)
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:306)
	at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:134)
	at com.avaje.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:117)
	at com.avaje.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:40)
	at com.avaje.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:108)
	at com.avaje.ebean.EbeanServerFactory.create(EbeanServerFactory.java:67)
	at com.dk.sample.ebean.Main.main(Main.java:29)

解決策

VM引数にjavaagentコンパイルオプションを指定する。

-javaagent:/【フルパス】\avaje-ebeanorm-agent.jar

-javaagent:C:\work\workspace\Sample\lib\avaje-ebeanorm-agent-4.7.1.jar

参考文献

http://cs.hatenablog.jp/entry/2013/06/18/114913
http://tenten0213.hatenablog.com/entry/2013/07/18/224512

関連記事

O/Rマッパー [1] ~ Ebean ~

http://blogs.yahoo.co.jp/dk521123/36044963.html