Java 休眠ids的未知整型数据类型
我从Hibernate开始,我有一个错误,我就是想不出来 我有以下课程: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;
@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;