Привет, У меня есть проблема с JPA и SQLite.Null или Zero Первичный ключ в работе блока clone sqlite
У меня есть таблица под названием Категория в SQLite. Это структура этой таблицы:
Category:
catID INTEGER Primary Key
catName TEXT
Теперь я пытаюсь вставить новую категорию через JPA. Это мой способ сделать это:
public void insertCategory(EntityManager em, String catName) {
Category cat = new Category();
cat.setCatName(catName);
em.getTransaction().begin();
em.persist(cat);
em.flush();
em.getTransaction().commit();
}
Теперь у меня есть Execption на em.flush(). Исключение говорит
Null or zero primary key encountered in UnitOfWork clone
Я знаю, что это происходит из-за кота объекта. Код catID по-прежнему равен нулю. Класс выглядит следующим образом: увеличивает
@Entity
@Table(name="Category")
public class Category implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name="catName")
private String catName;
@Id
@Column(name="catID")
private Integer catID;
+ Getter and Setter
}
SQLite первичного ключа автоматически, когда не дано в запросе. Как я могу сообщить моей Программе о Первичном ключе, чтобы работать без получения этого исключения?
[ Эта тема] (http://stackoverflow.com/questions/22026715/jpa-null-or-zero-primary-key-encountered-in-unit-of-work-clone) может помочь. –
Я пробовал это решение, но потом я стал ошибкой Exception SQL или отсутствующей базой данных (нет такой таблицы: SEQUENCE). Я думаю, что это не сработает с SQLite. – Kevin
Попробуйте аннотировать 'catID' просто с' @ GeneratedValue' (без параметров). Последовательность - это концепция Oracle. –