Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разобраться с JPA / 7 сообщений из 7, страница 1 из 1
27.02.2013, 14:09:06
    #38168015
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с JPA
Вставляю запись:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  javax.persistence.EntityManager man = javax.persistence.Persistence.createEntityManagerFactory("PU2").createEntityManager();
          
          EntityTransaction tr= man.getTransaction();
              tr.begin();
              
             Lockdoc lock=new Lockdoc();
             
               
               lock.setDateLock(new Date());
               lock.setIdContactlock(this.globalSettings.getUserSystem());
               lock.setIdPrihodnakl(prihodNLock.getId());
               lock.setPrihodnakl(prihodNLock);
             
             man.persist(lock);
             
             tr.commit();
             
             man.close();


Сущность Lockdoc имеет вид:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class Lockdoc implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id_prihodnakl")
    private Integer idPrihodnakl;
    @Column(name = "date_lock")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateLock;
    @JoinColumn(name = "id_contactlock", referencedColumnName = "id")
    @ManyToOne
    private Contacts idContactlock;
    @JoinColumn(name = "id_prihodnakl", referencedColumnName = "id", insertable = false, updatable = false)
    @OneToOne(optional = false)
    private Prihodnakl prihodnakl;


Т.е. у нее нет праймари кей.
Все отлично добавляется. После я делаю удаление вставленного в базу Lockdoc:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  javax.persistence.EntityManager em = javax.persistence.Persistence.createEntityManagerFactory("PU2").createEntityManager();
  EntityTransaction entr=em.getTransaction();
  entr.begin();

Query query=em.createQuery("DELETE FROM Lockdoc st WHERE st.idPrihodnakl= ?1 and st.idContactlock= ?2");
     
    query.setParameter(1, lockD.getIdPrihodnakl());
    query.setParameter(2, globalSettings.getUserSystem()); 


int deleteRecord=query.executeUpdate();

         entr.commit();
         em.close();


Все удаляется, все супер. НО! Далее я снова пытаюсь вставить объект в базу, т.е. вызываю эту же последовательность кода и в результате получаю ошибку:
Код: java
1.
Exception Description: Cannot persist detached object [frtree.Lockdoc[ idPrihodnakl=1 ]]. 


Я думаю можно было легко решить эту проблему путем введения PK в таблице БД, которой соответствует сущность Lockdoc, но мне не нужен там праймари кей. Как быть, подскажите пожалуйста.
Спасибо.
...
Рейтинг: 0 / 0
27.02.2013, 14:13:07
    #38168026
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с JPA
JulTно мне не нужен там праймари кей
в смысле? Он не тебе нужен а БД. По любому лучше добавить для будущего.
...
Рейтинг: 0 / 0
27.02.2013, 14:13:15
    #38168027
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с JPA
JulT,
Т.е. у нее нет праймари кей.
как это нет?
...
Рейтинг: 0 / 0
27.02.2013, 14:17:17
    #38168031
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с JPA
JulTТ.е. у нее нет праймари кей.

id_prihodnakl, тогда что?

JulTВсе отлично добавляется. После я делаю удаление вставленного в базу Lockdoc:
Exception Description: Cannot persist detached object [frtree.Lockdoc[ idPrihodnakl=1 ]].

Странно, конечно. А сравнить две сущности, которая первая раз вставляется и которая падает. Они чем-то отличаются по полям?

JulTЯ думаю можно было легко решить эту проблему путем введения PK в таблице БД, которой соответствует сущность Lockdoc, но мне не нужен там праймари кей. Как быть, подскажите пожалуйста.

Возможно, нужен другой маппинг, не стоило id_prihodnakl мапить два раза. Сейчас поищу пример.
...
Рейтинг: 0 / 0
27.02.2013, 14:19:07
    #38168033
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с JPA
http://floomby.ru/s1/paQSuh/full/
это временная табличка, в ней могут находиться данные ровно столько, сколько запущена программа
...
Рейтинг: 0 / 0
27.02.2013, 14:20:50
    #38168037
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с JPA
...
Рейтинг: 0 / 0
27.02.2013, 14:27:15
    #38168048
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с JPA
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разобраться с JPA / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]