this 라이브러리를 사용하는 스프링 부트 및 Amazon DynamoDB와 함께 작업하고 있습니다. ...Amazon DynamoDB 및 클래스 계층
public abstract class EventLogEntry extends AbstractEventLogEntry {
private static final long serialVersionUID = 1638093418868197192L;
@DynamoDBAttribute(attributeName = "UserId")
private String userId;
@DynamoDBAttribute(attributeName = "EventName")
private String eventName;
protected EventLogEntry(AdminEvent event) {
userId = event.getUserName();
eventName = event.getClass().getSimpleName();
}
protected EventLogEntry(UserEvent event) {
userId = event.getUserId();
eventName = event.getClass().getSimpleName();
}
/* Getters/Setter */
}
다른 :
@DynamoDBTable(tableName = "EventLogs")
abstract class AbstractEventLogEntry implements Serializable {
private static final long serialVersionUID = 7713867887326010287L;
@DynamoDBHashKey(attributeName = "EventId")
private String eventId;
@DynamoDBAttribute(attributeName = "GeneratedAt")
@DynamoDBMarshalling(marshallerClass = ZonedDateTimeMarshaller.class)
private ZonedDateTime generatedAt;
AbstractEventLogEntry() {
eventId = new UUID().value();
generatedAt = ZonedDateTime.now();
}
/* Getters/Setter */
}
... 다른 클래스 : 문제는이 클래스 계층 구조입니다
public class AdminEventLogEntry extends EventLogEntry {
private static final long serialVersionUID = 1953428576998278984L;
public AdminEventLogEntry(AdminEvent event) {
super(event);
}
}
... 그리고 마지막 하나
public class UserEventLogEntry extends EventLogEntry {
private static final long serialVersionUID = 6845335344191463717L;
public UserEventLogEntry(UserEvent event) {
super(event);
}
}
일반적인 클래스 계층 구조입니다. 지금은 AdminEventLogEntry
를 저장하기 위해 노력하고있어 및 UserEventLogEntry
공통 저장소 사용 :
@EnableScan
public interface EventLogEntryRepository extends DynamoDBCrudRepository<EventLogEntry, String> {
// ...
}
을 ... 그리고 항상 나에게 말한다 : 즉시 내가 (다시) 선언대로 작동 키를
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: no key(s) present on class io.shido.events.domain.AdminEventLogEntry
을 :
@DynamoDBHashKey(attributeName = "EventId")
private String eventId;
내 질문은 다음과 같습니다. 계층 구조간에 공통적 인 모든 필드를 다시 선언해야합니까? 부모에게서 HashKey
을 인식하지 못하는 것 같습니다.
실마리가 있습니까?
해결책을 찾았습니까? –
예! 그리고 그것은 꽤 훌륭합니다 (지금까지). 나는 그것을 게시 할 것이다. –