Olingo-odata4-jpa-processor не может «разрешить атрибут» при использовании $ expandJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Olingo-odata4-jpa-processor не может «разрешить атрибут» при использовании $ expand

Сообщение Anonymous »

Итак, я пытаюсь попасть в Одату с JPA. Я использую Spring Data JPA/Hibernate, а не Eclipselink. База данных является локальной в MEM H2. Я не буду включать свою конфигурацию, чтобы не вырастить пост более чем необходимо, и я не ожидаю, что конфигурация будет проблемой. Если это могло бы, дайте мне знать, и я редактирую пост. Я попробовал это наоборот, но ошибка остается прежней. < /P>
Блок определяется как: < /p>
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Department extends Area {

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "unit_key", referencedColumnName = "pkey")
private Area unit;

}

< /code>
и отдел определяется как < /p>
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Unit extends Area {
private Integer unitId;
private String address;

@OneToMany(mappedBy = "unit", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List units = new ArrayList();
< /code>
Когда я звоню в метаданные $ metadata, моя сущность отдела, кажется, является правильной: < /p>


< /code>
Я ожидаю, что следующий запрос будет работать: < /p>
masterdata/v1/Departments()?$expand=Unit
< /code>
, но вместо этого я не смогу разрешить атрибут 'unit_key' of '... model.odataexposed.department' "< /code> < /p>
Как если бы я не был полем. Сначала укороченная версия: < /p>
"stacktrace": {
"exceptions": [
{
"class": "org.hibernate.query.sqm.PathElementException",
"message": "Could not resolve attribute 'unit_key' of '...model.odataExposed.Department'",
"invocation": {
"class": "org.hibernate.query.sqm.SqmPathSource",
"method": "getSubPathSource",
"line": 95
}
}
],
"stacktrace": [
{
"class": "org.hibernate.query.sqm.SqmPathSource",
"method": "getSubPathSource",
"line": 95
},
{
"class": "org.hibernate.query.sqm.tree.domain.AbstractSqmPath",
"method": "get",
"line": 196
},
{
"class": "org.hibernate.query.sqm.tree.domain.AbstractSqmPath",
"method": "get",
"line": 42
},
{
"class": "com.sap.olingo.jpa.processor.core.query.ExpressionUtility",
"method": "convertToCriteriaPath",
"line": 82
},
{
"class": "com.sap.olingo.jpa.processor.core.query.JPAAbstractQuery",
"method": "createSelectClause",
"line": 294
},
{
"class": "com.sap.olingo.jpa.processor.core.query.JPAJoinQuery",
"method": "execute",
"line": 43
},
{
"class": "com.sap.olingo.jpa.processor.core.processor.JPANavigationRequestProcessor",
"method": "retrieveData",
"line": 93
},
{
"class": "com.sap.olingo.jpa.processor.core.api.JPAODataRequestProcessor",
"method": "readEntity",
"line": 211
},
{
"class": "org.apache.olingo.server.core.ODataDispatcher",
"method": "handleSingleEntityDispatching",
"line": 621
},
...
{
"class": "org.apache.olingo.server.core.ODataHandlerImpl",
"method": "process",
"line": 89
},
{
"class": "org.apache.olingo.server.core.ODataHttpHandlerImpl",
"method": "process",
"line": 74
},
{
"class": "org.apache.olingo.server.core.ODataHttpHandlerImpl",
"method": "process",
"line": 88
},
{
"class": "com.sap.olingo.jpa.processor.core.api.JPAODataRequestHandler",
"method": "processInternal",
"line": 71
},
{
"class": "com.sap.olingo.jpa.processor.core.api.JPAODataRequestHandler",
"method": "process",
"line": 55
},
...
{
"class": "java.lang.reflect.Method",
"method": "invoke",
"line": 568
},
{
"class": "org.springframework.aop.support.AopUtils",
"method": "invokeJoinpointUsingReflection",
"line": 354
},
...
< /code>
Просто для полноты, обе сущности расширяют область, как вы, возможно, видели, и область определяется как: < /p>
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Area extends BaseEntity {
private Integer areaId;
@Column(length = 10000)
private String comment;

private Instant changedDate;
}
< /code>
и Baseentity as: < /p>
@Getter
@Setter
@MappedSuperclass
@AllArgsConstructor
@NoArgsConstructor
public abstract class BaseEntity {
@Column(unique = true)
String uuid;
@Id
private String pkey;
private String name;

@PrePersist
public void prePersist() {
if (this.uuid == null || this.uuid.isEmpty()) {
this.uuid = java.util.UUID.randomUUID().toString();
}
}

}
< /code>
Любая идея будет оценена. Я попытался вручную установить имя столбца, так как предположил, что это может быть проблемой с автоматическими значениями. Я также пытался установить другие отношения с другим классом, но проблема сохраняется со всеми отношениями, которые я пробовал. Чтобы быть справедливым, я пробовал только сущности, расширяющие мой класс базовых. Я мог бы попытаться изменить это, но я не чувствую, что это будет стоить что -либо.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ing-expand
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»