2

我的问题可能很简单,以至于我找不到答案。

我想做这样的事情:

@Entity  
public class EntityA {

    @Transient
    @SomeQueryAnnotation(query="select b from EntityB where b.id=1")
    private EntityB entityB;
}

EntityB 是一种静态资源。不应将其保存回数据库。实体之间也没有映射。

[编辑]

当我这样做时,你认为这没问题:

@Entity  
public class EntityA {

    private EntityB getEntityB() {
       ServiceRemote service = (ServiceRemote)context.lookup("ejb:ServiceRemote"); 
       return service.getEntityB();
    }
}

应该仍然可以使用远程处理,因为可以在每个客户端的 jndi.properties 文件中配置连接。当您需要从实体访问数据库时,您首选的方法是什么?

4

1 回答 1

0

最佳推荐 - 除非这些对象具有数据库内关系,否则不应存在实体关系。

第二好的 - 我建议您创建一个数据传输对象来获取您的对象。

@Entity  
public class EntityA {

  @Transient
  private EntityB entityB;
}

@Stateless
public class EntityADTO {
   EntityManager em;

   public EntityA findA(Object pkey) {
      EntityA a = em.find(okey, EntityA.class);
      a.entityB = em.find(1, EntityB.class);

      return a;
   }
}
于 2013-01-05T06:00:49.457 回答