Pie*_*ald 4 java google-app-engine jpa google-cloud-datastore
我对JPA有点绿,但我做了一些搜索,找不到这个错误代码所以我会在这里发布.
我正试着坚持这堂课:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
用这个方法调用:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
java.lang.IllegalArgumentException: Type ("") is not that of an entity but needs to be for this operation
Run Code Online (Sandbox Code Playgroud)
我在GAE上运行它.我怀疑这与我的实体有关,但我不确定是什么.
编辑:填写更多详细信息 -
这是BaseBasket(我删除了getter和setter)
@Entity(name = "BaseBasket")
public class BaseBasket {
public String basketID;
public List<BasketItem> items;
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个简单的UserBasket:
UserBaset b = new UserBasket();
Run Code Online (Sandbox Code Playgroud)
然后分配各种值.
我没有使用datanucleus增强器,这只是我天真的理解,它不是必需的,因为这些对象(UserBasket等)在我的应用程序的客户端和服务器部分之间共享,我想让它们保持简单.
由于您使用的是JPA,请检查您的persistence.xml定义是否符合DataNucleus文档
特别是,如果您没有使用映射文件,请检查要保留的所有实体是否在classes元素中声明.如提供的示例:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |