Есть и другие опции, но я бы написал некоторый код, который проверяет, являются ли эти поля пустыми строками, и, если это так, устанавливает "агент" в ноль.
Итак, если у вас есть что-то вроде:
saveCompany(Company company) {
agent=company.getAgent();
if (StringUtils.isEmpty(agent.getName()) && StringUtils.isEmpty(agent.getEmail()) && StringUtils.isEmpty(agent.getPhoneNumber)) {
company.setAgent(null);
}
saveToMongo(company);
}
Если у вас много похожих случаев, вы также можете написать некоторый код, который делает это путем отражения.
if (allFieldsAreEmpty(company.getAgent())) {
company.setAgent(null);
}
Кстати, данные, которые вы должны получить из формы, должны немного отличаться,
"agent": [
{
"name": "",
"email": "",
"phoneNumber": ""
}
]
Другой вариант - установить в Play так, чтобы, когда пользователь вводит пустую строку в форму, он получал NULL-строку вместо "". Хотя вы все равно получите агента со всеми полями, равными нулю.