2011-11-09 13 views
4

私はJPAで少し緑色ですが、何らかの検索を行ったのでこのエラーコードは見つかりませんでした私はここに投稿します。GAE/J - JPAエラー - タイプ( "")はエンティティのものではありませんが、この操作に必要です

私はこのクラスを永続化しようとしている

public Long createUserBasket(UserBasket basket) { 
try{ 
     synchronized (this) { 
      EntityManager em = EMFService.get().createEntityManager(); 
      em.persist(basket); 
      em.close(); 
     } 
    }catch(Exception ex){ 

     //log.severe("Uh oh!" + ex.toString()); 
    } 
} 

し、このエラーを取得:このメソッドの呼び出しで

@Entity(name = "UserBasket") 
public class UserBasket extends BaseBasket implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long Id; 

    private static final long serialVersionUID = 1L; 

    public static long getSerialversionuid() { 
     return serialVersionUID; 
    } 

    public Long getId() { 
     return Id; 
    } 

    public void setId(Long id) { 
     Id = id; 
    } 


} 

java.lang.IllegalArgumentException: Type ("") is not that of an entity but needs to be for this operation 

私はこれを上の実行していますよGAE。私はそれが私のエンティティと関係があると思うが、私は何がわからない。

編集:詳細に記入 - ここ

はBaseBasket(私はゲッターとセッターを切り取る)

@Entity(name = "BaseBasket") 
public class BaseBasket { 

    public String basketID; 
     public List<BasketItem> items; 

} 

であると私はシンプルでUserBasketを作成します。

UserBaset b = new UserBasket(); 

そして、さまざまな値を割り当てます。

私はdatanucleusエンハンサーを使っていませんでした。これは私の単純な理解であり、必須ではなく、アプリケーションのクライアント部分とサーバー部分の間でこれらのオブジェクト(UserBasketなど)を共有していました。それらを簡単に保つ。

+0

あなたのバスケットインスタンスはどのように作成しますか? BaseBasketエンティティを見ることはできますか?また、EntityManager/EntityManagerFactoryの作成方法についても興味があります。 –

+0

例外にスタックトレースがあります。投稿する。あなたのクラスを強化しましたか? – DataNucleus

答えて

5

あなたはJPAを使用しているので、あなたが存続したいすべてのエンティティであることを確認し、あなたがマッピングファイルを使用していない場合は、あなたのpersistence.xmlの定義は、特にDataNucleus documentation

に適合していることを確認してくださいクラス要素で宣言されています。提供された例として:

<!-- Online Store --> 
<persistence-unit name="OnlineStore"> 
    <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider> 
    <class>org.datanucleus.samples.metadata.store.Product</class> 
    <class>org.datanucleus.samples.metadata.store.Book</class> 
    <class>org.datanucleus.samples.metadata.store.CompactDisc</class> 
    <class>org.datanucleus.samples.metadata.store.Customer</class> 
    <class>org.datanucleus.samples.metadata.store.Supplier</class> 
    <exclude-unlisted-classes/> 
    <properties> 
     <property name="datanucleus.ConnectionDriverName" value="org.h2.Driver"/> 
     <property name="datanucleus.ConnectionURL" value="jdbc:h2:datanucleus"/> 
     <property name="datanucleus.ConnectionUserName" value="sa"/> 
     <property name="datanucleus.ConnectionPassword" value=""/> 
    </properties> 
</persistence-unit> 
+0

これは正解であるためぶつかりました。この問題を解決するには、persistence.cmlファイルを更新して、永続性のために必要なクラスを追加してください。 –

関連する問題