Я пытаюсь вставить в AWS DynamoDB, я получаю вставку регистра, но получаю ошибку в Java (Eclipse), когда я вставляю, но повторяю, я вижу таблицу в DynamoDB моя вставка.
Я получаю ошибку ->
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: Aricle[ID_TABLE]: null or empty value for primary key
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperFieldModel.unconvert(DynamoDBMapperFieldModel.java:171)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$ValueUpdate.apply(DynamoDBMapper.java:1440)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:746)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:622)
at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.save(AbstractDynamoDBMapper.java:113)
at org.socialsignin.spring.data.dynamodb.core.DynamoDBTemplate.save(DynamoDBTemplate.java:136)
at org.socialsignin.spring.data.dynamodb.repository.support.SimpleDynamoDBCrudRepository.save(SimpleDynamoDBCrudRepository.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Мой класс Java
@DynamoDBTable(tableName = "ARTICLE")
public class Article{
@Id
private String ID_TABLE;
private String description;
public Article() {
}
public Article(String description) {
this.description=description;
}
@DynamoDBHashKey(attributeName = "ID_TABLE")
@DynamoDBAutoGeneratedKey
public String getID_TABLE() {
return ID_TABLE;
}
@DynamoDBAttribute(attributeName = "Description")
public String getDescription() {
return description;
}
}
Я загружаю это с нулевым или пустым значением для первичного ключа, НО я получаю @DynamoDBAutoGeneratedKey ...
Я отправляю с помощью Angular объект Article с:
export class Article{
id: string;
description: string;
}
let newParam: Article= {
id: '',
description: 'chair'
};
Теперь я понимаю, как я отправляю '', @DynamoDBAutoGeneratedKey не запускается, потому что я пытался с
let newParam: Article= {
id: null,
И я получаю ошибку null
com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: null (Service: AmazonDynamoDBv2; Status Code: 407; Error Code: null; Request ID: null)
Затем, если я отправил объект в SpringBoot из Angular, И этому объекту необходимо объявить идентификатор Angular, а объект из Springboot получит этот объект, как мне сгенерировать ключ?
Редактировать с новыми данными.
Я получаю объект
контроллер:
@RequestMapping(method = RequestMethod.POST, value = "/addParam", produces = MediaType.APPLICATION_JSON_VALUE)
public MyMessage addParam(@RequestBody Article article) {
try {
pgRepository.save(article);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
}
репозиторий:
public interface Article Repository extends CrudRepository<Article , String> {
}




После добавления аннотации @DynamoDBAutoGeneratedKey, которая автоматически генерирует хэш-ключ или свойство ключа диапазона, модель сохраняемости объекта будет генерировать случайный UUID при сохранении этих атрибутов. Только свойства String могут быть помечены как автоматически сгенерированные ключи.
This key will be null till until you call the save method to save it in the database. When you call the save then API will generate a UUID and save in the database also set the same into your object.
Фрагмент кода будет:
public static void saveItem() {
Article obj = new Article();
obj.setDescription("abc123");
// ID_TABLE field is null at this point
DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient);
mapper.save(obj);
// ID_TABLE field will have a value at this point
System.out.println("Object was saved with id " + obj.getID_TABLE());
}
Надеюсь, это поможет.
Но я отправляю значение «id» из Angular.
вам не нужно отправлять это значение от себя, поскольку вы ожидаете этого от базы данных. просто удалите это из своего запроса.
отправьте только это: let newParam: Article = {description: 'Chair'};
Я не могу удалить из своего запроса, потому что мне нужен этот ввод в Angular5
Затем установите для него значение null.
DynamoDBMapper mapper = новый DynamoDBMapper (DynamoDBClient); DynamoDBclient? моя объектная статья?
Это клиентский объект, подключенный к базе данных. см .: docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/…
нулевое или пустое значение для первичного ключа
Должен быть нулевым, а не пустым. Оба имеют разные значения.
Привет, Шиванг Агарвал, я отправляю var id = null из Angular, затем SpringBoot получает этот объект с id = null, я использую extends CRUD для сохранения этого объекта, вы используете mapper. Если я отправлю null или «Мой CRUD ВСТАВЬТЕ объект, НО я получаю ошибку. Благодарю.
Приложил сюда свой весенний код. используя для сохранения объекта.
Я нашел решение, которое мне нужно setID_TABLE () XD
Можете ли вы поделиться кодом, который вы использовали для синтаксического анализа и сохранения объекта?