В моей таблице адресов у меня есть поле с именем isPrimary. Для каждого адреса, назначенного пользователю, пользователь может иметь только один адрес в качестве основного.
У меня есть метод ниже, который я пытаюсь исправить. Если новый адрес должен быть создан и для атрибута isPrimary установлено значение true, мне нужно обновить все существующие адреса пользователей и установить для isPrimary значение false.
Когда этот метод вызывается и для существующей записи атрибут имеет значение true. Возвращение, которое я получаю обратно, равно нулю.
Возможно ли это сделать? Я бы использовал триггер, но MySql не поддерживает триггеры, действующие на таблицу, в которую они вставляют / обновляют.
Это мой метод сохранения
@Override
public UserAddress save(UserAddress obj) throws UserException
{
if(obj.getIsPrimary())
{
List<UserAddress> addressList = template.find("FROM UserAddress WHERE UserID = ?", obj.getUserAccount().getUserId());
for(Iterator<UserAddress> i = addressList.iterator(); i.hasNext();)
{
i.next().setIsPrimary(false);
template.update(i.next());
}
}
template.saveOrUpdate(obj);
return obj;
}