Сопоставление Spring Security AclObjectIdentity в AclClass-Entity с Hibernate - PullRequest
0 голосов
/ 04 декабря 2018

Spring Security обеспечивает обработку ACL с четырьмя предопределенными классами.

В этом контексте представляют интерес два класса.

Класс AclClass

@Entity
@Table(name = "acl_class")
public class AclClass implements Serializable {

  @Id
  @Column(name="id")
  public Long id;

  @Column(name = "class")
  public String className; //class path, e.g., com.myproject.cat

}

Класс AclObjectIdentity

@Entity
@Table(name = "acl_object_identity")
public class AclObjectIdentity implements Serializable {

  @Id
  @Column(name="id")
  public Long id;

  @JoinColumn(name = "object_id_class", referencedColumnName = "id")
  @ManyToOne
  public AclClass objectIdClass;

  @Column(name = "object_id_identity")
  public Long objectIdIdentity;

}

AclClass определяет класс Java, который обрабатывается списками ACL, а AclObjectIdentity представляет точные объекты.Для сопоставления нужен идентификатор AclClass, а также первичный ключ этого объекта. Примечание: Поскольку AclObjectIdentity может ссылаться на несколько классов, сохраняется только Id, и отображение объекта Hibernate не может быть применено.

Теперь у меня есть класс cat, и мне нужна какая-то структура, напримерсопоставление OneToOne:

@Entity
@Table(name = "cat")
public class cat implements  Serializable {

  @Id
  @Column(name="id")
  public Long id;

  @OneToOne // where class = cat and objectIdClass = id
  public AclObjectIdentity object;
  ...
}

Как я могу добиться этого без изменения структуры ACL Spring?

...