Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA:从实体中,查询在它们之间没有关系映射的其他实体_Jpa - Fatal编程技术网

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

JPA:从实体中,查询在它们之间没有关系映射的其他实体,jpa,Jpa,我的问题可能很简单,我找不到答案 我想这样做: @Entity public class EntityA { @Transient @SomeQueryAnnotation(query="select b from EntityB where b.id=1") private EntityB entityB; } EntityB是一种静态资源。不应将其保存回数据库。实体之间也没有映射 [编辑] 你认为我这样做可以吗: @Entity public class

我的问题可能很简单,我找不到答案

我想这样做:

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

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

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

@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;
   }
}

如果这两个实体之间没有关系,为什么要让实体B成为实体A的一部分,而不是自己获取它?这闻起来要么像一个设计糟糕的遗留模式,要么像一个有问题的设计决策。好问题。EntityA的作用类似于插件并扩展了超级实体。但要完成它的工作,它需要检索更多的数据。这个案例比典型的做法更像是一个例外。嗯,我怀疑JPA会这样做,但我很好奇。