Критерии api выборки объекта от предка - PullRequest
0 голосов
/ 13 июня 2018

есть ли какие-либо изменения, чтобы получить объект от предка?У меня есть эти сущности:

@Entity
@Table(name = "SPORT")
@DiscriminatorColumn(name = "sport_type", discriminatorType = DiscriminatorType.STRING, length = 32)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Sport implements Serializable {

@Column(name = "sport_type", insertable = false, updatable = false)
    private String sportType;

    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
    @JoinColumn(name = "HEAD_ID", referencedColumnName = "IDENT")
    @ToStringExclude
    protected Headquaters headquaters;

}




@Entity
@DiscriminatorValue(Constants.COST_REPORT_CODE)
public class HandSport extends Sport {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "COST_TRADE_ID", referencedColumnName = "TRADE_ID")
    private Playground Playground;


}

из этих сущностей Я сгенерировал эту метамодель

@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(HandSport.class)
public abstract class HandSport_ extends com.test.entity.Sport_ {

    public static volatile SingularAttribute<HandSport, Playground> playground;
}

@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(Sport.class)
public abstract class Sport_ {

    public static volatile SingularAttribute<Sport, Headquaters> headquaters;   
    public static volatile SingularAttribute<Sport, String> id;


}

И теперь я могу выбрать только игровую площадку:

EntityGraph<HandSport> fetchGraph = entityManager.createEntityGraph(HandSport.class);
fetchGraph.addSubgraph(HandSport_.playground);
select.distinct(true);
TypedQuery<HandSport> typedQuery = entityManager.createQuery(select)
.setHint("javax.persistence.loadgraph", fetchGraph);

Почему яне могу добавить

fetchGraph.addSubgraph(Sport_.headquters);

Если я это сделаю, я вижу ошибку компиляции:

"Cannot resolve method 'addSubgraph(javax.persistence.metamodel.SingularAttribute<com.test.entity.Sport, com.test.entity.Headquateres>)'"

Есть ли какие-либо изменения для получения значений от предка?Или можно создать второй FetchGraph и зарегистрировать два графика по подсказке?

1 Ответ

0 голосов
/ 13 июня 2018

В JPA API неверно используется обобщение в различных методах класса EntityGraph.Об этом сообщили в JPA "экспертной группе" еще в 2015 году, но они не удосужились это исправить.

DataNucleus JPA публикует свой собственный jap API jar, и они исправили его дляих пользователи некоторое время назад, но так как вы используете Hibernate, то это не принесет вам пользы.

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