Java JPA[Hibernate]延迟加载GWT问题
我试图在GWT前端使用惰性加载JPA[Hibernate] 在实体中Java JPA[Hibernate]延迟加载GWT问题,java,hibernate,gwt,jpa,Java,Hibernate,Gwt,Jpa,我试图在GWT前端使用惰性加载JPA[Hibernate] 在实体中 @ManyToOne(targetEntity = Item.class,fetch=FetchType.LAZY) private Item item; 在道 @Transactional public List<Purchase> findAllPurchases() { return jpaTemplate.execute(new JpaCallback<List<Purchase
@ManyToOne(targetEntity = Item.class,fetch=FetchType.LAZY)
private Item item;
在道
@Transactional
public List<Purchase> findAllPurchases() {
return jpaTemplate.execute(new JpaCallback<List<Purchase>>(){
public List<Purchase> doInJpa(EntityManager em)
throws PersistenceException {
List<Purchase> list = em.createQuery("select o from Purchase o").getResultList();
for(Purchase p:list){
Item item = p.getItem();
if(item!=null)
item.getItemName();
}
return list;
}
@Transactional
公共列表findAllPurchases(){
返回jpaTemplate.execute(新的JpaCallback(){
公共列表doInJpa(实体管理器em)
抛出PersistenceException{
List List=em.createQuery(“从采购订单中选择订单”).getResultList();
用于(采购p:列表){
Item=p.getItem();
如果(项!=null)
getItemName();
}
退货清单;
}
}));
}
我收到了这个错误
com.google.gwt.user.client.rpc.SerializationException:类型“com.hardwarestore.vo.Item_$$\u javassist_0”未包含在可由此序列化策略序列化的类型集中,或者无法加载其类对象。出于安全目的,将不会序列化此类型。:instance=com.hardwarestore.vo。Item@a1eaf6
Purchase类和Item类都实现了可序列化接口。感谢您的任何帮助。谢谢。GWT中的序列化程序无法序列化集合的代理对象,因为它的类是在运行时在服务器部件中创建的。要序列化反序列化,必须在compiletime(我认为)找到ProxyObject源
就我所知,在GWT中序列化的过程是无法进行延迟加载的。您必须以这种方式转换实体,创建一个可调用的方法,该方法通过保存集合的实体的主键从JS加载集合,或者您必须将集合切换到即时加载。或者,您可以使用DTO(数据传输对象)。只需在服务器端转换持久化对象,然后再将其发送到客户端。是的,深度克隆似乎是目前唯一的方法。这是我最不想做的事情。但是GWT让我们回到DTO时代不是很糟糕吗?同样的问题也得到了解决和解决。