Я работаю над проверкой, когда пользователь отправляется на покупку, в базу данных создается и сохраняется объект Purchase
. Затем я беру id
объекта и отправляю его в PayPal для создания кнопки (таким образом, я могу позже идентифицировать покупку). Однако, когда я пытаюсь восстановить идентификатор, он возвращает null.Получите идентификатор объекта домена после создания
Я попытался очистить его, прежде чем я получу идентификатор, но он все еще не работает.
Вот мой домен объект:
package website
import java.time.Instant
import java.time.temporal.ChronoUnit
class Purchase {
String buttonId
final Instant expires
private boolean complete
User user
Product product
Purchase(Product product, User user) {
this.product = product
this.user = user
expires = Instant.now().plus(1, ChronoUnit.DAYS)
}
void completePurchase() {
// confirm that the purchase hasn't been completed already
if (complete) {
throw new PurchaseAlreadyCompleteException()
}
complete = true
}
boolean isComplete() {
return complete
}
static class ButtonIdAlreadyInitializedException extends RuntimeException {}
static class PurchaseAlreadyCompleteException extends RuntimeException {}
}
Вот код, я бегу:
Purchase purchase = new Purchase(product, user)
purchase.save(flush: true)
println 'purchase id: ' + purchase.id
С точки зрения дизайна было бы лучше использовать отдельную последовательность в качестве бизнес-ключа для предоставления PayPal. Вы никогда не должны делиться первичными ключами с вашими данными с третьими сторонами. –
Возможно, у вас есть ошибка при сохранении. Вы можете использовать 'save (failOnError: true)', чтобы выбросить ошибку, если она есть. –