Skip to content

Tech debt: JPA entities missing equals/hashCode #323

@Brad-Edwards

Description

@Brad-Edwards

Description

Requirement, RequirementRelation, and TraceabilityLink have no equals()/hashCode() implementations. They rely on JPA's default object identity, which is fragile:

  • Two detached Requirement instances with the same id are not equal in a Set
  • AnalysisService.impactAnalysis() returns Set<Requirement> — deduplication relies on object identity, not business identity
  • Collection membership checks are unreliable across JPA session boundaries

Recommendation: Implement equals/hashCode based on the business key (uid for Requirement, natural key composite for RequirementRelation and TraceabilityLink).

Location: Requirement.java, RequirementRelation.java, TraceabilityLink.java

Traced Requirements

  • GC-A001: Requirement Creation

Impact

Correctness — subtle bugs in set operations, deduplication, and caching.

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtTechnical debt and code quality improvements

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions