package com.billpaymentservice.bbps.entites; import java.util.List; import jakarta.persistence.CollectionTable; import jakarta.persistence.Column; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; @Getter @Setter @Entity @Table(name = "bbps_interchange_fee_conf") public class InterchangeFeeConf extends Auditable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // Primary Key for DB table @Column(name = "interchange_fee_conf_id", nullable = false, unique = true) private String interChangeFeeConfId; @Column(name = "mti") private String mti; @Column(name = "payment_mode") private String paymentMode; @Column(name = "payment_channel") private String paymentChannel; @Column(name = "response_code") private String responseCode; // ⚙️ Since 'fees' is a list of simple strings, we use ElementCollection @ElementCollection @CollectionTable( name = "interchange_fee_conf_fees", joinColumns = @JoinColumn(name = "interchange_fee_conf_id_fk") ) @Column(name = "fee_value") private List fees; @Column(name = "default_fee") private boolean defaultFee; @Column(name = "effective_from") private String effctvFrom; @Column(name = "effective_to") private String effctvTo; // 🔗 Many InterchangeFeeConf records belong to one Biller @ManyToOne @JoinColumn(name = "biller_id", nullable = false) private BillerDetails biller; }