Получить родительский объект из репозитория данных Spring

Как я могу получить родительский объект Entity из объекта SubEntity.

subEntityRepository.findById(id), а затем getEntity() возвращают объект сущности null.

@Entity
public class Entity {
    @Id
    private Long id;
    @Reference
    private List<SubEntity> subEntity;


    public Building(List<SubEntity> subEntity) {
        this.subEntity = subEntity;
    }

    //getters and setters
}

@Entity
public class SubEntity {
    @Id
    private Long id;

    @Reference
    private Entity entity;

    //getters and setters
}

public interface EntityRepository extends DatastoreRepository<Entity, Long> {}


public interface SubEntityRepository extends DatastoreRepository<SubEntity, Long>{}

P.S. Это база данных Google DataStore! Ни OneToMany, ни другие аннотации JPA недоступны.

ваш subEntityRepo действительно является DatastoreRepository<Entity, Long>, а не DatastoreRepository<SubEntity, Long>?

RichieK 21.01.2019 17:35

Извините, опечатка, это DatastoreRepository<SubEntity, Long>

Nick Nick 21.01.2019 17:37

может быть, "@OneToMany" в вашем классе сущностей вместо обоих @Reference

RichieK 21.01.2019 17:41

мне также любопытна эта аннотация @Reference! (верхняя ссылка?) Что такое ваш «поставщик jpa» и почему вы ожидаете, что это сработает?

xerx593 21.01.2019 17:42

Это платформа Google spring-cloud, она не поддерживает один ко многим

Nick Nick 21.01.2019 17:56
2
5
142
1

Ответы 1

@Entity
@Table(name = "entity")
public class Entity {

    @Id
    private Long id;

    @OneToMany(mappedBy = "entity")
    private List<SubEntity> subEntity;

    ....
}

@Entity
@Table(name = "subEntity")
public class SubEntity {
    @Id
    private Long id;

    @ManyToOne
    @JoinColumn(name = "entity")
    private Entity entity;

    //getters and setters
}

Google DataStore — это база данных NoSQL, поэтому она не поддерживает аннотации ManyToOne, OneToMany или JoinColumn.

Nick Nick 21.01.2019 19:52

Другие вопросы по теме