Hibernate MappingException在MySql中使用annotation@Inheritation时出现异常
我正在使用Hibernate framework 3.6.10.Final和MySql。我要走了 线程“main”org.hibernate.MappingException中的异常:无法将标识列键生成与以下映射一起使用:org.koushik.javabrains.dto.Vehicle 当am包括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
@继承时(策略=继承类型。每个类别的表)
在车辆类别中。没有这个注释,它可以正常工作
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;
}
}
请看下面的答案