我是spring boot新手,需要关于具有多个内部连接的自定义JPA查询的帮助。基本上,我需要将以下SQL查询转换为JPA查询:
SELECT count(uc.certifications_groups)
FROM firms f
INNER JOIN firms_users_map fum on fum.firm_realm_id = f.firm_realm_id
INNER JOIN users u on u.global_auth_id = fum.global_auth_id
INNER JOIN users_certifications uc on uc.global_auth_id = u.global_auth_id
WHERE f.firm_realm_id = 1 and uc.certifications_groups = 'qbo'
GROUP BY uc.certifications_groups;
下面是代码结构:
公司实体
@Entity(name = "firms")
@Table(name = "firms")
public class FirmEntity {
@Id
private long firmRealmId;
@JoinColumn(name = "tier_name", nullable = false)
private String tierName;
@Column(nullable = false)
private int currentPoints;
@Column(nullable = true)
private Date gracePeriodEnd;
@ManyToMany
@JoinTable(
name = "firms_users_map",
inverseJoinColumns = { @JoinColumn(name = "global_auth_id") },
joinColumns = { @JoinColumn(name = "firm_realm_id") }
)
private Set<UserEntity> users;
public Set<UserEntity> getUsers() {
return users;
}
public void setUsers(Set<UserEntity> users) {
this.users = users;
}
@Entity
@Table(name = "users")
public class UserEntity {
@Id
@Column(name="global_auth_id", nullable = false)
private long global_auth_id;
public long getGlobal_auth_id() {
return global_auth_id;
}
public void setGlobal_auth_id(long global_auth_id) {
this.global_auth_id = global_auth_id;
}
@OneToMany
@JoinTable(
name = "user_certifications",
inverseJoinColumns = { @JoinColumn(name = "certification_group") },
joinColumns = {@JoinColumn(name="global_auth_id")}
)
private Set<users_certificationsEntity> users_certificationsEntity;
public Set<users_certificationsEntity> getUser_certifications() {
return users_certificationsEntity;
}
public void setUser_certifications(Set<users_certificationsEntity> user_certifications) {
this.users_certificationsEntity = user_certifications;
}
软件库
public interface FirmRepository extends CrudRepository<FirmEntity, Long> {
@Query("select count(c) from firms f inner join f.users c inner join
c.users_certificationsEntity x where f.firmRealmId = ?1 "
+ "and x.certifications_groups=qbo_adv")
int count_qbo_adv_Certification(long firmRealmId)
认证计数信号I mpl
public class CertificationCountSignalImpl implements Signal {
@Autowired
private FirmRepository firmRepository;
@Autowired
private SignalMetadataRepository signalMetadataRepository;
@Autowired
private CertificationCountSignalImpl certificationCountSignalImpl;
private int get_qbo_certificationPoints(long firmRealmId) {
if(firmRealmId <=0) {
throw new IllegalArgumentException();
}
int clientCount = firmRepository.countAllClients(firmRealmId);
int CertificationsCount_QBO_ByRealm_id = firmRepository.count_qbo_Certifications(firmRealmId);
int totalPoints =0;
int pointsCounter =0;
首先,您可以使用实体配置来声明表之间的关系,并且不要在@Query中使用JOIN词(例如--Construct JPA Query for a OneTo多国关系),或者在Query中使用连接,但在Entity类中不使用anotation@oneTo多国,例如--Hql,如何在具有一对多关系的表之间编写连接查询?
我使用以下JQL使我的查询工作:
@Query("select count(c) "
+ + "from firms f "
+ + "inner join f.users u "
+ + "inner join u.certifications c "
+ + "where f.firmRealmId = ?1 "
+ + "and c.certificationsGroups='qbo'")
+ int count_qbo_Certifications (long firmRealmId);
我需要创建一个jpa自定义查询,使用几个表上的联接来获取记录。 以下是我想要达到的目标: 对很少的参数进行数据排序(在运行时决定) 使用where子句进行筛选(在运行时决定) 示例: @query(value=“从用户a中选择a.name,b.city,c.reason在a.id=b.id上连接地址b在a.id=c.id上连接测试c 我无法为其创建常规查询。 任何其他的方法对我来说也是可以接受的来
问题内容: 所以我有四个桌子。每个表都有一个与前一个表ID相同的ID。因此,我的点击表中有一个ID和一个广告来源的ID。在广告表中,它有一个广告ID和一个来自其广告系列的ID。所以这是一个例子。 因此,要找出表4中的值从何而来,我需要遍历每个表并检查它们具有哪个ID。基本上,我想知道表1中的哪些值与表4中的值相关联。 表4中的内容是网站的访问者,表1中的内容是互联网广告。我想知道哪些访客来自哪些广
我在Node.js忘记密码后端路由,我试图使用nodemailer从我从namecheap.com购买的自定义域发送电子邮件,以及电子邮件域。我不确定这是主机、端口/安全还是授权的问题。但是,当我更改主机时,它会给出一个ECONREFUSED错误,所以我相信该部分正在工作。我的防火墙被禁用了(据我所知),我重新启动了,但是很难判断,因为诺顿防病毒软件控制着它。 这是我的代码,取自路由器。在我的后端
我开始学习JPA,并基于我在SQL Server中测试的以下本机SQL实现了一个使用JPA查询的示例: 根据上面的SQL,我构造了以下JPQL查询: 正如您所看到的,我仍然缺少原始查询中的条件。我的问题是,我怎样才能把它放入我的JPQL中?
我想使用带有注释@query的Jpa存储库创建一个连接查询。 我有两张桌子: 和: 我的表实体
我正在做表A和表B的左连接,并试图将结果提取到自定义POJO中,该POJO具有表A和表B中的字段,如下所示: 它适用于除myCode字段之外的所有字段,myCode字段是连接这两个表的字段。对我来说,myCode的值是从正确的表B中获取的,表A中的所有记录在表B中都没有相应的条目。我想知道jooQ如何决定映射到POJO的字段,以及是否在任何地方记录了这种行为。 我的目标是将表A和表B中的所有字段提