【发布时间】:2020-06-30 01:07:03
【问题描述】:
该问题仅适用于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 中,因为在没有它的应用程序启动时错误不会消失
【问题讨论】:
标签: java spring hibernate spring-boot gradle