Почему я не могу записать данные в базу данных со многими отношениями? - PullRequest
0 голосов
/ 17 марта 2020

У меня есть база данных со следующей структурой:

enter image description here

Когда я делаю вызов REST для user_product с намерением обновить количество продуктов со следующей полезной нагрузкой:

{
    "user": 4,
    "product": "2",
    "amountOfNewProducts": 32
}

я продолжаю получать Parameter value [...UserProductId@3c5] did not match expected type [java.lang.Integer (n/a)] error.

My ServiceImplementation:

@Override
    public void update(UserProductVO userProductVO) {

        UserProduct userProduct = new UserProduct();
        userProduct.setId(new UserProductId(userProductVO.getProduct().getId(), userProductVO.getUser().getId()));

        Product product = productRepository.getById(userProduct.getId());
        product.setAmount(product.getAmount() + userProductVO.getAmountOfNewProducts());
        productRepository.save(product);
        userProduct.setProduct(product);

        userProduct.setUser(new User(userProductVO.getUser().getId()));
        userProduct.setAmountOfNewProducts(userProductVO.getAmountOfNewProducts());

        userProductRepository.save(userProduct);
    }

Хотя, когда я пытался записать данные с этим код:

@Override
    public void update(UserProductVO userProductVO) {

        UserProduct userProduct = new UserProduct();
        userProduct.setId(new UserProductId());
        userProduct.setUser(userProductVO.getUser());
        userProduct.setProduct(userProductVO.getProduct());
        userProduct.setAmountOfNewProducts(userProductVO.getAmountOfNewProducts());

        productRepository.updateProduct(userProductVO.getAmountOfNewProducts(), userProductVO.getProduct().getId());
        userProductRepository.save(userProduct);
    }

Это сработало, хотя с ошибкой. Он продолжал записывать данные до тех пор, пока не произойдет сбой сервера:

{
        "id": 4,
        "name": "Grimbergen Blonde",
        "price": 132,
        "mass": 0.33,
        "alcohol": 6.7,
        "picture": "https://i.imgur.com/OnioHd5.png",
        "amount": 435,
        "userProducts": [
            {
                "id": {
                    "productId": 18,
                    "userId": 4
                },
                "user": {
                    "id": 4,
                    "userName": "drapastadrapa",
                    "firstName": "Damir",
                    "lastName": "Danski",
                    "password": "drapa",
                    "authorization": "worker",
                    "userProducts": [
                        {
                            "id": {
                                "productId": 18,
                                "userId": 4
                            },
                            "user": {
                                "id": 4,
                                "userName": "drapastadrapa",
                                "firstName": "Damir",
                                "lastName": "Danski",
                                "password": "drapa",
                                "authorization": "worker",
                                "userProducts": [
                                    {
                                        "id": {
                                            "productId": 18,
                                            "userId": 4
                                        },
                                        "user": {
                                            "id": 4,
                                            "userName": "drapastadrapa",
                                            "firstName": "Damir",
                                            "lastName": "Danski",
                                            "password": "drapa",
                                            "authorization": "worker",
                                            "userProducts": [
                                                {
                                                    "id": {
                                                        "productId": 18,
                                                        "userId": 4
                                                    },
                                                    "user": {
                                                        "id": 4,
                                                        "userName": "drapastadrapa",
                                                        "firstName": "Damir",
                                                        "lastName": "Danski",
                                                        "password": "drapa",
                                                        "authorization": "worker",
                                                        "userProducts": [
                                                            {
                                                                "id": {
                                                                    "productId": 18,
                                                                    "userId": 4
                                                                },
                                                                "user": {
                                                                    "id": 4,
                                                                    "userName": "drapastadrapa",
                                                                    "firstName": "Damir",
                                                                    "lastName": "Danski",
                                                                    "password": "drapa",
                                                                    "authorization": "worker",
                                                                    "userProducts": [
                                                                        {
                                                                            "id": {
                                                                                "productId": 18,
                                                                                "userId": 4
                                                                            },
                                                                            "user": {
                                                                                "id": 4,
                                                                                "userName": "drapastadrapa",
                                                                                "firstName": "Damir",
                                                                                "lastName": "Danski",
                                                                                "password": "drapa",
                                                                                "authorization": "worker",
                                                                                "userProducts": [
                                                                                    {
.......and so on.

Проблема в том, как я написал ServiceImpl, или проблема может быть в самой базе данных? Любая подсказка будет оценена.

...