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会这样做,但我很好奇。