Итак, я пытаюсь попасть в Одату с 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
Olingo-odata4-jpa-processor не может «разрешить атрибут» при использовании $ expand ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение