Files
bbps-backend/src/main/java/com/billpaymentservice/bbps/entites/Group.java
T
2025-12-10 10:03:15 +05:30

63 lines
1.7 KiB
Java

package com.billpaymentservice.bbps.entites;
import java.util.List;
import jakarta.persistence.ForeignKey;
import jakarta.persistence.CascadeType;
import jakarta.persistence.CollectionTable;
import jakarta.persistence.Column;
import jakarta.persistence.ConstraintMode;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
@Table(name = "bbps_biller_groups")
public class Group extends Auditable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "group_id")
private Long id;
@Column(name = "group_name")
private String name;
@Column(name = "input")
private String input;
@CollectionTable(
name = "group_params",
joinColumns = @JoinColumn(name = "group_id"),
foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)
)
private List<String> params;
// 🔗 Parent group relationship (for nested groups)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_group_id")
private Group parentGroup;
// 🔁 Child groups (self-reference)
@OneToMany(mappedBy = "parentGroup", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Group> groups;
// 🔗 Back reference to CustomerParamGroups
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_container_id")
private CustomerParamGroups customerParamGroups;
}