Извлечь все сущности с заданной аннотацией, указанной из иерархии сущностей - PullRequest
0 голосов
/ 16 октября 2019

Представьте, что у меня есть высокоуровневая сущность, называемая "PkgGroup".

PkgGroup unpersistedPkgGroup = new PkgGroup();

Класс PkgGroup будет представлять собой некоторый класс JPA, такой как

@Entity
@Table(name = "PKG_GROUP")
@XmlRootElement
public class PkgGroup implements Serializable { 
    @Id
    @NotNull
    @Column(name = "PKG_GROUP_ID")
    private BigDecimal pkgGroupId;

    @Size(max = 50)
    @Column(name = "CMS_CODE")
    private String cmsCode;

    .........

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true,  mappedBy = "pkgGroup")
    private Collection<PkgSellableCliGroup> pkgSellableCliGroupCollection = new ArrayList<>( );

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true,  mappedBy = "pkgGroup")
    private Collection<PkgSellableMembershipType> pkgSellableMembershipTypeCollection = new ArrayList<>();

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true,  mappedBy = "pkgGroup")
    private Collection<PkgSellableSourceMarket> pkgSellableSourceMarketCollection = new ArrayList<>(); 
    .......
    }

Есть Address объекты типа классав объекте "unpersistedPkgGroup". (только представьте unpersistedPkgGroup.getPkgSellableCliGroup().getAddress() retuns Address список объектов типа). Но я точно не знаю, как перемещаться, чтобы получить Address объекты из объекта "unpersistedPkgGroup".

Класс адреса выглядит так,

@Entity
@Table(name = "MAIN_ADDRESS")
public class Address
{
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "address_seq")
    @SequenceGenerator(name = "address_seq", sequenceName = "NIMASH_TEST_ADDRESS_SEQ", allocationSize = 1, initialValue = 1)
    private int addressId;

    @Column
    private String firstLane;

    @Column
    private String secondLane;

    @Column
    private String area;
........
}

Обратите внимание, что класс Address имеет аннотацию@Table(name = "MAIN_ADDRESS"). Я хочу реализовать такую ​​функцию, как

public List<Object> extractReleventObjectsIncludingAnnotation(PkgGroup object, String annotationString){
   .......
}

, которую можно использовать как

List<Address> retrivedAddresses = (List<Address>)extractReleventObjectsIncludingAnnotation(unpersistedPkgGroup ,"@Table(name = "MAIN_ADDRESS")");

Я использую Hibernate и Spring в проекте. Есть ли способ реализовать эту функцию? обратите внимание, что unpersistedPkgGroup еще не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...