【发布时间】:2019-06-03 19:01:24
【问题描述】:
我是 Spring Boot 的新手。我有一个 mysql 数据库,我使用查询来计算表中的行数。但它不起作用,它仍然返回我的原始表数据。你能帮我检查一下我的代码吗?
这是我的实体:
@Entity
@Table(name = "act_id_membership", schema = "activiti", catalog = "")
@IdClass(ActIdMembershipEntityPK.class)
public class ActIdMembershipEntity {
private String userId;
private String groupId;
@Id
@Column(name = "USER_ID_")
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Id
@Column(name = "GROUP_ID_")
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ActIdMembershipEntity that = (ActIdMembershipEntity) o;
return Objects.equals(userId, that.userId) &&
Objects.equals(groupId, that.groupId);
}
@Override
public int hashCode() {
return Objects.hash(userId, groupId);
}
}
这是我的查询:
@Repository
public interface MemershipRepository extends JpaRepository<ActIdMembershipEntity, String> {
@Query ("select new com.example.activiti_restful.dtos.UserMembership(i.userId, count(i)) from ActIdMembershipEntity i where i.userId ='kermit'")
UserMembership countMemberships(String userId);
}
更新代码: 我的服务等级:
@Service
public class MembershipService {
@Autowired
private MemershipRepository repository;
public long count() {
return repository.count();
}
我的资源类:
@RestController
public class MembershipResource {
@Autowired
private MembershipService membershipService;
@GetMapping("/membership")
public long list() {return membershipService.count();}
}
我的自定义 JSON 对象类:
public class UserMembership {
private String userId;
private long numberOfusers;
public UserMembership(String userId, long numberOfusers) {
this.userId = userId;
this.numberOfusers = numberOfusers;
}
}
MySQL 表: act_id_membership
【问题讨论】:
-
查询“选择计数...”返回一个数字而不是列表
-
我尝试使用以下答案修复我的代码,因为这是我第一次使用 spring,所以我仍然没有解决它。我更新了我的代码。可以查一下吗?
-
当我在 Postman 中调用我的 json 链接时,它说:"message": "[Ljava.lang.Object; cannot be cast to java.lang.Long",
-
如果你想统计数据库中的所有行,只要使用 CrudRepository 的默认函数,这意味着你不需要在 MemershipRepository 上写任何东西,只需调用“count()”函数。如果要统计特定条件的行,可以试试:"select count(i) from ActIdMembershipEntity i where i.userId = 'kermit'")
-
好的,我明白了。实际上我希望它返回一个像 [{ name: kermit, value:6}] 这样的 json 格式。现在它只返回一个数字 6。我怎么能这样做?谢谢!
标签: mysql spring-boot spring-data-jpa jpql