Я немного расстроен с 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;
}
}
С помощью этого вызова метода:
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());
}
}
И получаю эту ошибку:
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 и т. д.) совместно используются клиентской и серверной частью моего приложения, я хотел, чтобы они были простыми.