急!hibernate问题this id generator generates long, integer, short or string

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:05:44
求解为什么出现这个问题````
是因为我的类型是这样吗private BigDecimal id;
package com.v512.demo.hibernate;

import java.text.SimpleDateFormat;

import org.hibernate.Session;
import org.hibernate.Transaction;

public class HibernateTest {
public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
Guestbook g = new Guestbook();
g.setName("zhang");
g.setEmail("zhang@qq.com");
g.setPhone("12213");
g.setTitle("aaaaaa");
g.setContent("hibernate");
SimpleDateFormat sdf = new SimpleDateFormat();
String date = sdf.format(new java.util.Date());
g.setTime(date);
Transaction tx = session.beginTransaction();
tx.begin();
session.saveOrUpdate(g);
tx.commit();
}
}
我guest.hbm.xml的ID是这样的
<class name="com.v512.demo.hibernate.Guestbook" table="GUESTBOO

type="java.math.BigDecimal" 这个类型比较大,可能和数据库有冲突,一般用long吧。要不用string <generator class="uuid" />
还有你可以写个转换器,让hibernate认识这个类型。 uuid是系统自动生成主键,你的主键也要改成string了。当然数据库也要跟着变。

<class name="com.v512.demo.hibernate.Guestbook" table="GUESTBOOK" schema="SCOTT">
<id name="id" type="java.math.BigDecimal">
<column name="ID" precision="22" scale="0" />

<generator class="native" />

native 是 数据库自增 数据库村不上这么大类型的值 用String 吧!
主键 就可以!

数据类型不对吧!一般主键就用uuid这个了。类型就是String了。