java - Spring 应用程序中的字段未初始化

标签 java spring hibernate spring-boot gradle

该问题仅适用于 namelastName 字段;

有一个 User 类,Customer 类继承自该类。相应地,父类的字段返回nullCustomer 类的构造函数有 super

用户:

package com.tinychiefdelights.model;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {

    public User(){ // Пустой конструктор для Hibernate

    }

    User(String name, String lastName){ // Базовый конструктор для дочерних классов
        this.name = name;
        this.lastName = lastName;
    }

    // Поля
    private String login;

    private String password;

    private String name;

    private String lastName;

    @Override
    public String toString() { // Без этого метода вместо инициализированных строк выводятся символы.
        return "User{" +
                "name='" + name + '\'' +
                ", lastName='" + lastName + '\'' +
                '}';
    }

    // Методы
    public void changePassword(){// Сменить пароль

    }
}

客户:

package com.tinychiefdelights.model;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.List;

@Getter
@Setter
@Entity
public class Customer extends User {

    public Customer(){ // Пустой конструктор для Hibernate

    }

    public Customer(String name, String lastName){ // Пользовательский конструктор создается,
        super(name, lastName);                     // когда нам нужно создать новый экземпляр,
    }                                              // но у нас еще нет ID.


    // Поля
    private @Id @GeneratedValue Long id;

    private double wallet;

//    private List<Order> orderList; 


    // Методы
    public void depositMoney(){// Внести деньги на счет

        }

    public void withdrawMoney(){// Вывести деньги со счета

        }

    public void makeOrder(){// Сделать заказ

        }
}

在此类中,我将数据传递给 Customer 类的构造函数:

加载数据库:

package com.tinychiefdelights;

import com.tinychiefdelights.model.Customer;
import com.tinychiefdelights.repository.CustomerRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@Slf4j
public class LoadDatabase {

    @Bean
    CommandLineRunner initDatabase(CustomerRepository repository) { // Добавляю данные для Customer
        return args -> {
            log.info("Preloading " + repository.save(new Customer("Artur", "Vartanyan")));
            log.info("Preloading " + repository.save(new Customer("Andrey", "Chekmaryov")));
        };
    }

enter image description here

enter image description here

附注问题不在 LOMBOK 中,因为当应用程序在没有 LOMBOK 的情况下启动时,错误不会消失

最佳答案

repository.save 似乎在这里有问题,因为虽然它返回正确的值,但似乎没有任何内容存储在数据库中,如果您可以发布数据如何存储到数据库中的实现通过代码,下一步将确定将其存储在数据库中时哪个部分有问题。

关于java - Spring 应用程序中的字段未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60748003/

相关文章:

java - 错误处理、引发异常和用户输入

java - 如何使用 modelmapper 将多个字段映射到一个目标字段

java - JOGL 中的文本困难

spring - JUnit:如何按照 Spring 的意图访问 Spring 配置?

hibernate - 使用 JoinTable 的 OneToMany 映射不会显示在数据库中

java - Tomcat 7 上的 Websockets 不起作用

java - spring TaskExecutor 类中的 Autowiring 对象为空

java - 如何定义 spring-boot 中的依赖注入(inject)?

java - 当 session 对象不是静态时无法运行数据库查询?

java - 失败 - 上下文路径/MyProject 中的应用程序无法启动(JndiException 和 NameNotFoundException)