我对上面的关系感到困惑。
我的Oracle DB表:
xd_Users: user_id (pk), client_id (fk), name, doj, email, dol
xd_Managers: manager_id (pk), user_id (fk)对应的Java实体User和Manager分别对应于上述两个表。Manager和User是独立的,没有继承关系,并且具有与DB表相对应的字段。
在我的应用程序中,Manager必须是用户。
我正在编写a(n尚未完成)方法(在一个名为PersistService的类中)来检索作为经理的用户列表。
public static ArrayList<User> getManagersForClient(Client client) {
Long clientId = client.getClientId();
EntityManager em = getEntityManager();
String sqlQuery = "SELECT u FROM XD_USERS u, XD_MANAGERS m WHERE u.CLIENT_ID = :clientId";
TypedQuery<User> query = em.createQuery(sqlQuery, User.class);
query = query.setParameter("clientId", clientId);
ArrayList<User> clientUsers = (ArrayList<User>) query.getResultList();
for (User user : clientUsers) {
}
return clientUsers;
}我构造的伪sql查询是(末尾的:client_id只是java变量,因此是伪sql):
select * from users u join managers m on u.user_id = m.user_id where u.client_id = :client_id;我在将其转换为有效的JPQL查询时遇到问题。我不知道该如何思考如何解决这个问题。特别是,标识变量、单值关系字段、集值关系字段和持久化字段之间的关系非常混乱。更让我困惑的是this的帖子。请帮帮我!
发布于 2016-11-17 06:35:44
如果您正确地编码了相关实体,那么您的sql select查询在jpql中类似于这样(根据您给出的相关表的结构):
select u.userId,u.name,u.doj,u.email, u.dol, m.managerId
from User u
join u.manager m
where u.clientId = :client_id;https://stackoverflow.com/questions/40643438
复制相似问题