58 行
1.7 KiB
Java
58 行
1.7 KiB
Java
|
|
package com.xuqm.bugcollect.entity;
|
|||
|
|
|
|||
|
|
import jakarta.persistence.*;
|
|||
|
|
import java.time.LocalDateTime;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 记录每个 Issue 影响的唯一用户,用于正确计算 affectedUsers(去重)。
|
|||
|
|
* 通过联合主键 (issue_id, user_id) 保证唯一性。
|
|||
|
|
*/
|
|||
|
|
@Entity
|
|||
|
|
@Table(name = "log_issue_users")
|
|||
|
|
@IdClass(LogIssueUserEntity.IssueUserId.class)
|
|||
|
|
public class LogIssueUserEntity {
|
|||
|
|
|
|||
|
|
@Id
|
|||
|
|
@Column(nullable = false)
|
|||
|
|
private Long issueId;
|
|||
|
|
|
|||
|
|
@Id
|
|||
|
|
@Column(nullable = false, length = 128)
|
|||
|
|
private String userId;
|
|||
|
|
|
|||
|
|
@Column(nullable = false)
|
|||
|
|
private LocalDateTime firstSeenAt;
|
|||
|
|
|
|||
|
|
public Long getIssueId() { return issueId; }
|
|||
|
|
public void setIssueId(Long issueId) { this.issueId = issueId; }
|
|||
|
|
|
|||
|
|
public String getUserId() { return userId; }
|
|||
|
|
public void setUserId(String userId) { this.userId = userId; }
|
|||
|
|
|
|||
|
|
public LocalDateTime getFirstSeenAt() { return firstSeenAt; }
|
|||
|
|
public void setFirstSeenAt(LocalDateTime firstSeenAt) { this.firstSeenAt = firstSeenAt; }
|
|||
|
|
|
|||
|
|
public static class IssueUserId implements java.io.Serializable {
|
|||
|
|
private Long issueId;
|
|||
|
|
private String userId;
|
|||
|
|
|
|||
|
|
public IssueUserId() {}
|
|||
|
|
public IssueUserId(Long issueId, String userId) {
|
|||
|
|
this.issueId = issueId;
|
|||
|
|
this.userId = userId;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@Override
|
|||
|
|
public boolean equals(Object o) {
|
|||
|
|
if (this == o) return true;
|
|||
|
|
if (!(o instanceof IssueUserId that)) return false;
|
|||
|
|
return java.util.Objects.equals(issueId, that.issueId) && java.util.Objects.equals(userId, that.userId);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@Override
|
|||
|
|
public int hashCode() {
|
|||
|
|
return java.util.Objects.hash(issueId, userId);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|