63 lines
1.7 KiB
Java
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;
|
|
} |