Я создаю таблицу и последовательность в PostgreSQL:Glassfish объект не сохраняется
CREATE SEQUENCE
test_id
INCREMENT 1
START 1
MAXVALUE 500;
CREATE TABLE TEST(
id NUMERIC PRIMARY KEY DEFAULT NEXTVAL('test_id'),
name TEXT NOT NULL UNIQUE,
name2 TEXT DEFAULT NULL
);
Затем я генерировать объект в Eclipse:
@Entity
@NamedQuery(name="Test.findAll", query="SELECT t FROM Test t")
public class Test implements Serializable {
private static final long serialVersionUID = 1L;
private long id;
private String name;
private String name2;
public Test() {
}
@Id
@SequenceGenerator(name="TEST_ID_GENERATOR", sequenceName="TEST_ID", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="TEST_ID_GENERATOR")
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getName2() {
return this.name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
}
Тогда я пытаюсь написать свою сущность в таблице из сервлета:
@PersistenceUnit(name="Tets")
EntityManagerFactory emf;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
EntityManager em = emf.createEntityManager();
Test t = new Test();
t.setName("jdsfjjd");
t.setName2("jdsfjjd");
em.persist(t);
response.getWriter().append("Served at: ").append(request.getContextPath());
}
Когда я развертываю свой проект и использую этот сервлет, я не вижу журналы. Проект запускает сервлет запуска, в браузере я вижу: Served at: /Tets
, но когда я проверяю таблицу, я не вижу там своего объекта. Что я делаю не так?
добавить 'em.flush()' после 'em.persist (..)' – Jens
я добавить и поймать javax.persistence.TransactionRequiredException: Exception Описание: Нет внешнее управление транзакция активна в данный момент для данного потока – JugerJuger
Вы должны настроить менеджера транзакций – Jens