我有一个实体,byte[]
成员变量注释为@Lob
。我执行了一些计算,然后进行merge()
调用。这是在无状态bean中完成的。由于某种原因,它不会更新实体。也没有抛出异常。帮帮我www dot stackoverflow dot com,你是我唯一的希望。
这基本上就是我所拥有的。
我的实体:
@Entity
@Table(name="my_entity")
public class MyEntity implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private long id;
@Lob
@Column(name="data")
private byte[] data;
// Getters and Setters for both variables...
}
然后我有我的无状态豆。我将制作我所拥有的骨架。我有一个每分钟调用的计时器,它对数据起作用。
public @Stateless class MyBean implements IMyBeanRemote {
@PersistenceContext
private EntityManager em;
@Resource
javax.ejb.TimerService timerService;
@Timeout
public void doLogic(javax.ejb.Timer time) {
MyEntity e = getMyEntity(1L);
doMoreLogic(e);
}
private MyEntity getMyEntity(long id) {
return em.find(MyEntity.class, id);
}
private void doMoreLogic(MyEntity entity) {
entity.getData()[0] = 123;
em.merge(entity);
}
}
我认为这基本上反映了我的代码正在做的事情。当我最初创建MyEntity并持久化()时,它就可以了。
输入所有这些后,我决定检查是否在其他地方修改了这些数据。事实证明我做了,我正在重置数据作为调试测试。 =(全部解决了!
答案 0 :(得分:0)
睡眠不足导致我没有看到以前的调试代码重置数据。