Наследование таблицы на класс: получение нулевого значения

Я написал код для реализации наследования 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/

Другие вопросы по тегам