обновление сущности с помощью диспетчера спящих сущностей - PullRequest
0 голосов
/ 24 июня 2011

У меня есть одна реализация, где моя сущность Company расширяется RootEntity с помощью

strategy =InheritanceType.JOINED.(I am using hibernate-entitymanager) 

У меня есть другие сущности, которые не расширяются RootEntity.Когда я создаю все объекты, он создает. Но когда я пытаюсь обновить расширенную сущность RootEntity, она не обновляется.Но не расширяющаяся сущность обновляется.Код обновления находится в GenericDaoImpl, поэтому это тот же метод обновления.

в чем может быть проблема?мой код:

@Transactional(value="tx")
public E update(E entity) {
    E merged = null;
    RootEntity baseEntity = null;
    if(entity instanceof RootEntity ){
        baseEntity = (RootEntity)entity;
        merged = entityManager.find(entityClass, baseEntity.getId());
    }
    merged = entityManager.merge(entity);
    entityManager.flush();
    return merged;
}

Мой объект, который я пытаюсь объединить:

public class Societa extends RootEntity implements Serializable{

     private static final long serialVersionUID = 1L;

     // ASSOCIAZIONE CAMPI DB VARIABILI NELLA CLASSE
     @Column(name="nomeSocieta",nullable = false,columnDefinition="CHAR(80)")
     private String nomeSocieta;

      ......
}

и мой RootEntity:

@Entity
@Inheritance(strategy =InheritanceType.JOINED)
    public class RootEntity {

       private static final long serialVersionUID = 1L;

       @Id
       @Column(name="id",nullable = false)
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       private Long id;
        ...getters/setters..
   }

1 Ответ

0 голосов
/ 25 июня 2011

Newaz, мне нужно увидеть вашу RootEntity и Company сущность.

Кроме того, мне было трудно понять ваш код, хотя -

  1. Зачем вам нужноэто "если" условие?и что произойдет, если это, если это не так?
  2. entityManager.flush(); вам не нужно делать это, если я правильно понимаю, вы используете пружину, а @Transactional автоматически закрывает / сбрасывает транзакцию при вызове методазакончен.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...