Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate MappingException在MySql中使用annotation@Inheritation时出现异常_Mysql_Hibernate_Jakarta Ee_Hibernate Mapping - Fatal编程技术网

Hibernate MappingException在MySql中使用annotation@Inheritation时出现异常

Hibernate MappingException在MySql中使用annotation@Inheritation时出现异常,mysql,hibernate,jakarta-ee,hibernate-mapping,Mysql,Hibernate,Jakarta Ee,Hibernate Mapping,我正在使用Hibernate framework 3.6.10.Final和MySql。我要走了 线程“main”org.hibernate.MappingException中的异常:无法将标识列键生成与以下映射一起使用:org.koushik.javabrains.dto.Vehicle 当am包括@继承时(策略=继承类型。每个类别的表)在车辆类别中。没有这个注释,它可以正常工作 Vehicle.java是我的基类: @Entity @Inheritance(strategy=Inherit

我正在使用Hibernate framework 3.6.10.Final和MySql。我要走了

线程“main”org.hibernate.MappingException中的异常:无法将标识列键生成与以下映射一起使用:org.koushik.javabrains.dto.Vehicle

当am包括
@继承时(策略=继承类型。每个类别的表)
在车辆类别中。没有这个注释,它可以正常工作


Vehicle.java
是我的基类:

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

public class Vehicle 
{

    @Id
    @GeneratedValue
    private int vehicleId;
    private String vehicleName;
        public int getVehicleId() {
        return vehicleId;
    }

    public void setVehicleId(int vehicleId) {
        this.vehicleId = vehicleId;
    }

    public String getVehicleName() {
        return vehicleName;
    }

    public void setVehicleName(String vehicleName) {
        this.vehicleName = vehicleName;
    }

}

twoweeler.java

@Entity
public class TwoWheeler extends Vehicle {
    private String SteeringHandle;

    public String getSteeringHandle() {
        return SteeringHandle;
    }

    public void setSteeringHandle(String steeringHandle) {
        SteeringHandle = steeringHandle;
    }

}
@Entity
public class FourWheeler extends Vehicle {
    private String SteeringWheel;

    public String getSteeringWheel() {
        return SteeringWheel;
    }

    public void setSteeringWheel(String steeringHandle) {
        SteeringWheel = steeringHandle;
    }

}

FourWheeler.java

@Entity
public class TwoWheeler extends Vehicle {
    private String SteeringHandle;

    public String getSteeringHandle() {
        return SteeringHandle;
    }

    public void setSteeringHandle(String steeringHandle) {
        SteeringHandle = steeringHandle;
    }

}
@Entity
public class FourWheeler extends Vehicle {
    private String SteeringWheel;

    public String getSteeringWheel() {
        return SteeringWheel;
    }

    public void setSteeringWheel(String steeringHandle) {
        SteeringWheel = steeringHandle;
    }

}

我的主要班级:

public class HibernateTest {
    public static void main(String[] args)
    {

        Vehicle vehicle = new Vehicle();
        vehicle.setVehicleName("audi"+(int)(Math.random() * 100) + 1);

        TwoWheeler bike = new TwoWheeler();
        bike.setVehicleName("bike");
        bike.setSteeringHandle("Bike SteeringHandle");

        FourWheeler car = new FourWheeler();
        car.setVehicleName("car");
        car.setSteeringWheel("Car SteeringHandle");

        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(vehicle);
        session.save(bike);
        session.save(car);
        session.getTransaction().commit();
        session.close();

    }
}
当我运行时,我得到以下错误:

SLF4J:未能加载类“org.SLF4J.impl.StaticLoggerBinder”。 SLF4J:默认为无操作(NOP)记录器实现 SLF4J:有关更多详细信息,请参阅。 线程“main”org.hibernate.MappingException中的异常:无法将标识列键生成与以下映射一起使用:org.koushik.javabrains.dto.Vehicle 位于org.hibernate.persister.entity.UnionSubassentitypersister.(unionSubassentitypersister.java:90) 位于org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:90) 位于org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:286) 位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872) 位于org.koushik.hibernate.HibernateTest.main(HibernateTest.java:26)


如果使用每个类的表,则必须使用此ID生成策略:@GeneratedValue(策略
=GenerationType.TABLE)

Vehicle.java

@Entity
@Table(name="vehicle")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

public class Vehicle 
{

    @Id
    @GeneratedValue(strategy=GenerationType.TABLE)
    @Column(name="vehicle_id")
    private int vehicleId;
    @Column(name="vehicle_name")
    private String vehicleName;
        public int getVehicleId() {
        return vehicleId;
    }

    public void setVehicleId(int vehicleId) {
        this.vehicleId = vehicleId;
    }

    public String getVehicleName() {
        return vehicleName;
    }

    public void setVehicleName(String vehicleName) {
        this.vehicleName = vehicleName;
    }

}
请看下面的答案