Наследование таблицы на класс: получение нулевого значения
Я написал код для реализации наследования Table Per Class, который показан в учебнике YouTube. В моем коде у меня есть StoreData.java, который сохраняет объекты и Vehicle.java как родительский класс и TwoWheeler.java, FourWheeler.java как дочерние классы.
StoreData.java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
public class StoreData {
public static void main(String[] args) {
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction t = session.beginTransaction();
Vehicle vehicle = new Vehicle();
vehicle.setVehicle_Name("Car");
TwoWheeler twoWheeler = new TwoWheeler();
twoWheeler.setBikeModel("HONDA CBR 250");
FourWheeler fourWheeler = new FourWheeler();
fourWheeler.setFourWheelerModel("HONDA City");
session.save(vehicle);
session.save(twoWheeler);
session.save(fourWheeler);
t.commit();
session.close();
}
}
Vehicle.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Vehicle {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private int vehicle_id;
private String Vehicle_Name;
public int getVehicle_id() {
return vehicle_id;
}
public void setVehicle_id(int vehicle_id) {
this.vehicle_id = vehicle_id;
}
public String getVehicle_Name() {
return Vehicle_Name;
}
public void setVehicle_Name(String vehicle_Name) {
Vehicle_Name = vehicle_Name;
}
}
TwoWheeler.java
import javax.persistence.Entity;
@Entity
public class TwoWheeler extends Vehicle {
private String bikeModel;
public String getBikeModel() {
return bikeModel;
}
public void setBikeModel(String bikeModel) {
this.bikeModel = bikeModel;
}
}
FourWheeler.java
import javax.persistence.Entity;
@Entity
public class FourWheeler extends Vehicle {
private String fourWheelerModel;
public String getFourWheelerModel() {
return fourWheelerModel;
}
public void setFourWheelerModel(String fourWheelerModel) {
this.fourWheelerModel = fourWheelerModel;
}
}
Я использовал MySql и данные внутри таблицы выглядят так. Настольный автомобиль:
Vehicle_d Vehicle_name 1 автомобиль
Стол TwoWheeler:
идентификатор транспортного средства 2 null HONDA CBR 250
Стол FourWheeler:
идентификатор транспортного средства 3 null HONDA City
Здесь в колонке vehicle_name я получаю ноль вместо Car. Какую ошибку я сделал. Расскажите пожалуйста.
2 ответа
Вы должны использовать нижний регистр вместо верхнего, поэтому:
изменить первую букву
private String Vehicle_Name;
Кому:
private String vehicle_Name;
Вы можете узнать больше о том, как работают геттеры и сеттеры?
Надеюсь, это поможет вам.
Надеюсь, это поможет вам. Пожалуйста, обратитесь по этой ссылке http://www.java4s.com/hibernate/hibernate-inheritance-table-per-subclass-hierarchy/