Я использую структуру Hibernate 3.6.10.Final и MySql. Я осознаю
Исключение в потоке «основной» org.hibernate.MappingException: невозможно использовать генерацию ключа столбца идентификаторов с сопоставлением для: org.koushik.javabrains.dto.Vehicle
когда я включаю @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
в класс транспортного средства. Он отлично работает без этой аннотации.
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;
}
}
TwoWheeler.java
:
@Entity
public class TwoWheeler extends Vehicle {
private String SteeringHandle;
public String getSteeringHandle() {
return SteeringHandle;
}
public void setSteeringHandle(String steeringHandle) {
SteeringHandle = steeringHandle;
}
}
FourWheeler.java
:
@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: см. http://www.slf4j.org/codes.html#StaticLoggerBinder для получения дополнительной информации. Исключение в потоке «основной» org.hibernate.MappingException: невозможно использовать генерацию ключа столбца идентификаторов с сопоставлением для: org.koushik.javabrains.dto.Vehicle в org.hibernate.persister.entity.UnionSubclassEntityPersister.(UnionSubclassEntityPersister.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)