package com.l7tech.gateway.common.security.rbac;

import com.l7tech.objectmodel.imp.PersistentEntityImp;
import com.l7tech.util.DeserializeSafe;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.Version;

@Entity
@Table(name = "rbac_predicate")
@Inheritance(strategy = InheritanceType.JOINED)
@DeserializeSafe
public abstract class ScopePredicate extends PersistentEntityImp {
   protected Permission permission;
   static final long serialVersionUID = 8806849819099923773L;

   protected ScopePredicate(Permission var1) {
      this.permission = var1;
   }

   @Deprecated
   protected ScopePredicate() {
   }

   @Version
   @Column(name = "version")
   public int getVersion() {
      return super.getVersion();
   }

   @ManyToOne(optional = false)
   @JoinColumn(name = "permission_goid", nullable = false)
   public Permission getPermission() {
      return this.permission;
   }

   protected void setPermission(Permission var1) {
      this.permission = var1;
   }

   public abstract ScopePredicate createAnonymousClone();
}
