Java 休眠ids的未知整型数据类型

Java 休眠ids的未知整型数据类型,java,hibernate,Java,Hibernate,我从Hibernate开始,我有一个错误,我就是想不出来 我有以下课程: @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public abstract class AbstractColumn { @Id @GeneratedValue(strategy = GenerationType.AUTO) private String id; private String name;

我从Hibernate开始,我有一个错误,我就是想不出来

我有以下课程:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class AbstractColumn {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private String id;
    private String name;

//Other stuff
}
那我有

@Entity
public class DoubleColumn extends AbstractColumn  implements Column {

    @ElementCollection
    private Map<Double,String> isNA;
    private double min=0;
    private double max=0;
    @ElementCollection
    private List<Double> data;
    // a lot of stuff
}
该错误引发的唯一提示是该错误位于此处的主类中:

DoubleColumn c1 = new DoubleColumn("Datos varios");
        c1.addData(12);
        c1.addData(11);
        c1.addData(131);
        c1.addData(121);
        c1.addData(151);
        c1.addData(116);


        DataFrame datosHibernate = new DataFrame("Dataframe Hibernate");
        datosHibernate.addColumn(c1);


        Configuration hibernateConfig = new Configuration();
        SessionFactory sessionFactory = hibernateConfig.configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(datosHibernate);
        session.getTransaction().commit();
        session.disconnect();
        session.close();
        System.exit(0);
ID是字符串,我将它们注释为@GeneratedValue(我想我不需要自己初始化它们)。关系@OneToMany具有级联注释,因此应该正确映射它

我在没有session.save行的情况下尝试了代码,并且没有抛出错误,因此代码本身没有问题,它必须与Hibernate有关

我的配置文件是:

<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:h2:E:/bd;DB_CLOSE_DELAY=-1;MVCC=TRUE</property>
        <property name="connection.driver_class">org.h2.Driver</property>
        <property name="connection.username">user</property>
        <property name="connection.password"></property>
        <property name="dialect">org.hibernate.dialect.H2Dialect</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">create</property>

        <mapping class="com.dataframe.estructuras.DataFrame"></mapping>
        <mapping class="com.dataframe.estructuras.column.AbstractColumn"/>
        <mapping class="com.dataframe.estructuras.column.types.DoubleColumn"/>
    </session-factory>
</hibernate-configuration>

jdbc:h2:E:/bd;DB_CLOSE_DELAY=-1;MVCC=真
org.h2.Driver
用户
org.hibernate.dial.h2方言
真的
创造

它创建了数据库文件,我看到了所有生成的SQL代码、表以及所有的内容。是当它试图存储信息时,当东西坏了。

如果您希望字符串成为数据库密钥,您需要使用UUID自动生成密钥。大概是这样的:

@Id @GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
private String myId;

这就解决了问题,但如果我能运气好,把它贴在这里,我会有一个新的错误。。。以防万一:d这是新错误:托管刷新期间出错[Batch update从更新[0]返回意外的行数;实际行数:0;helpNevermind的预期值:1]Thx,已解决。我在另一个部分设置了一个ID。一切似乎都正常。Thx againNote@GeneratedValue(generator=“system uuid”)将生成的uuid保存在表中,因此不会保存实际的字符串值。如果要在表中保存字符串值,则不应使用此选项。
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:h2:E:/bd;DB_CLOSE_DELAY=-1;MVCC=TRUE</property>
        <property name="connection.driver_class">org.h2.Driver</property>
        <property name="connection.username">user</property>
        <property name="connection.password"></property>
        <property name="dialect">org.hibernate.dialect.H2Dialect</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">create</property>

        <mapping class="com.dataframe.estructuras.DataFrame"></mapping>
        <mapping class="com.dataframe.estructuras.column.AbstractColumn"/>
        <mapping class="com.dataframe.estructuras.column.types.DoubleColumn"/>
    </session-factory>
</hibernate-configuration>
@Id @GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
private String myId;