JPA:从实体中查询其他实体,它们之间没有关系映射

时间:2012-12-13 16:12:52

标签: jpa

我的问题可能很简单,我无法找到答案。

我想做这样的事情:

@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文件中配置连接。当您需要从实体访问数据库时,您首选的方法是什么?

1 个答案:

答案 0 :(得分: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;
   }
}