该问题仅适用于 name
和 lastName
字段;
有一个 User
类,Customer
类继承自该类。相应地,父类的字段返回null
。 Customer
类的构造函数有 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")));
};
}
附注问题不在 LOMBOK 中,因为当应用程序在没有 LOMBOK 的情况下启动时,错误不会消失
最佳答案
repository.save
似乎在这里有问题,因为虽然它返回正确的值,但似乎没有任何内容存储在数据库中,如果您可以发布数据如何存储到数据库中的实现通过代码,下一步将确定将其存储在数据库中时哪个部分有问题。
关于java - Spring 应用程序中的字段未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60748003/