【问题标题】:Id declaration in SpringSpring中的id声明
【发布时间】:2020-12-08 08:53:31
【问题描述】:

我有一些实体类,我有一个问题,因为我想在脑海中清除它。如果我插入了@ManyToOne 关系,例如@JoinColumn(name = "cardHolderId"),我是否应该删除原语private Long cardHolderId?因为我有一个讨论,一个程序员向我解释说我可以避免声明。但是如果我避免使用它,我将无法在服务等测试用例中使用它。


@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "card")
public class Card {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "code")
    private String code;

    @Column(name = "number")
    private String number;

    @Column(name = "issueDate")
    private Date issueDate;

    @Column(name = "expireDate")
    private Date expireDate;

    @Column(name = "elasticDate")
    private Date elasticDate;

    @Column(name = "pin")
    private Long pin;

    @Column(name = "isValid")
    private Boolean isValid;

    @Column(name = "isUsed")
    private Boolean isUsed;

    @Column(name = "isPin")
    private Boolean isPin;

    @Column(name = "cardCategoryId")
    private Long cardCategoryId;

    @Column(name = "hasNumberOfVisits")
    private Boolean hasNumberOfVisits;

    @Column(name = "numberOfVisits")
    private Long numberOfVisits;

    @Column(name = "isBlackListed")
    private Boolean isBlackListed;

    @Column(name = "cardHolderId")
    private Long cardHolderId;

    //Check Relationships

    @ManyToOne
    @JoinColumn(name = "cardCategoryId")
    private CardCategory cardCategory;

    @ManyToOne
    @JoinColumn(name = "cardHolderId")
    private CardHolder cardHolder;

    @Column(name = "companyGroupId")
    private Long companyGroupId;

    @ManyToOne
    @JoinColumn(name = "companyGroupId")
    private CompanyGroup companyGroup;


    @OneToMany(mappedBy = "card")
    private List<AccessControlSubject> accessControlSubjects = new ArrayList<>();

    @OneToMany(mappedBy = "card")
    private List<Card2Role> card2Roles = new ArrayList<>();

    @ManyToOne
    @JoinColumn(name = "cardHistoryId")
    private CardHistory cardHistory;

    @OneToMany(mappedBy = "vehicleCard")
    private List<Vehicle> vehicles = new ArrayList<>();

    @ManyToOne
    @JoinColumn(name = "sharedCardId")
    private PatrolSharedCard sharedCard;

    @ManyToOne
    @JoinColumn(name = "productionWorkId")
    private PrdWork productionWork;

    @ManyToOne
    @JoinColumn(name = "productionWorkHitsId")
    private PrdWorkHits productionWorkHits;

    @OneToMany(mappedBy = "card")
    private List<VisitorCardHistory> visitorCardHistories = new ArrayList<>();

【问题讨论】:

  • 为什么不呢?创建一个执行return this.companyGroup.getId() 的getter。为什么你需要一个额外的领域。这只会使事情复杂化。
  • 非常感谢 Deinum 先生!

标签: java spring jpa relationship


【解决方案1】:

您可以删除它并使用引用实体的 id :

this.getCardHolder().getId()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2021-08-03
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多