当前位置: 首页 > 知识库问答 >
问题:

Hibernate MappingException在MySql中使用annotation@Inheritage

司马萧迟
2023-03-14

我使用的是Hibernate Framework3.6.10、Final和MySQL。我得到了

线程“main”org.hibernate.mappingException中的异常:无法将标识列键生成用于:org.koushik.javabrains.dto.vehicle的映射

当am在vehicle类中包含@inheritation(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;
    }

}
@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.StatibloggerBinder”。slf4j:默认为无操作(NOP)记录器实现slf4j:有关更多细节,请参见http://www.slf4j.org/codes.html#staticloggerbinder。线程“main”org.hibernate.mappingException中的异常:无法使用标识列键生成,并在org.hibernate.persister.entity.unionSubclassEntityPersister.(UnionSubclassEntityPersister:90)在org.hibernate.persister.persister.persister.persister.persister.persister.persisterfactory.createClassPersister(persisterfactory.java:90)在main(HibernateTest.java:26)

共有1个答案

方嘉志
2023-03-14

如果使用TABLE_PER_CLASS,则必须使用以下ID生成策略:@generatedvalue(strategy=generationtype.table)

 类似资料:
  • 我想在我的角度表上指定的日期和时间执行以下方法-以下是输入: 发送电子邮件的方法(来自控制器) 电子邮件otification.class 我不知道该怎么做,如果有人帮忙,我会很感激的

  • 注释是Tapestry利用的一个非常重要的特性,用于简化Web应用程序开发。 Tapestry提供了许多自定义注释。 它具有类,方法和成员字段的注释。 如前一节所述,Annotation也可用于覆盖功能的默认约定。 Tapestry注释分为四个主要类别,它们如下所示。 组件注释 用于Pages,Components和Mixins类。 一些有用的注释是 - @Property - 适用于领域。 用于

  • 问题内容: 有人可以在Flask中共享有关如何访问MySQL数据库的示例代码吗?已经有文档显示了如何连接到sqlite,但是没有连接到MySQL。 提前非常感谢你 问题答案:

  • 问题内容: Windows(7)如何在R(统计语言)中使用MySQL? 然后使用linux没问题: 但是我没有找到用于CRAN上Windows的此类软件包。关于这一事实,只有一点说明。我发现版本2.10的软件包,但在2.12.1中不可用。 也试过了 但出现错误: 有什么方法可以从Windows中的R连接到MySQL数据库吗? 问题答案: 在 ran2的 帮助下找到了解决方案, ran2 给了我常见

  • Annotation,顾名思义,就是注解。Annotation可以将Kubernetes资源对象关联到任意的非标识性元数据。使用客户端(如工具和库)可以检索到这些元数据。 关联元数据到对象 Label和Annotation都可以将元数据关联到Kubernetes资源对象。Label主要用于选择对象,可以挑选出满足特定条件的对象。相比之下,annotation 不能用于标识及选择对象。annotat

  • 问题内容: 我使用的 春天3,JPA + Hibernate的 一个应用。在该应用程序中,我有一个服务类方法,该方法用具有属性的Annotation进行注释。在该方法内部,我正在使用循环将数据(即实体类)插入表中。对于每个循环实体类,必须将其保存到数据库。但这没有发生。仅当循环执行完成并从方法退出时,才会执行提交。然后,它提交并立即保存所有内容。但是在这种情况下,在提交数据之前,我需要先读取数据。