saveOrUpdate上的hibernate异常

时间:2016-04-28 17:21:08

标签: java hibernate sqlite exception

当我尝试保存或更新一个简单的实体时,我遇到了一个奇怪的问题:

switch($data[2]) {
    case 'J':
        $data[2] = '5';
        break;
    case 'N':
        $data[2] = '0';
        break;
}
fputcsv($fp, $data);

`DAO课程

   @Entity
public class TimeTable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @OneToMany(fetch = FetchType.EAGER, orphanRemoval = false, targetEntity = Subject.class)
    private Set<Subject> courses = new HashSet<Subject>();


@Entity
public class Subject {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @Column(nullable = false, unique = true)
    private String name;
    @Column(nullable = false)
    private boolean mandatory = false;

    @Column(nullable = false)
    private Integer credits;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true, targetEntity = Period.class)
    private Set<Period> periods = new HashSet<Period>();

和我的测试代码:

public synchronized void saveOrUpdate(E obj) {

    log.log(Level.DEBUG, "iniciando save de " + obj.toString());
    Session s = this.getSession();
    s.beginTransaction();
    s.saveOrUpdate(obj);
    try {
        s.getTransaction().commit();
    } catch (Exception e) {
        s.getTransaction().rollback();
        e.printStackTrace();
    }
    s.close();

    log.log(Level.DEBUG, "save concluido com sucesso");

}

但我在saveOrUpdate行上遇到异常:

GenericDAO<TimeTable> asd = new GenericDAO<TimeTable>(TimeTable.class);
GenericDAO<Subject> qwe = new GenericDAO<Subject>(Subject.class);
Set<Subject> aasdasd = new HashSet<Subject>();
aasdasd.addAll(qwe.findAll());
TimeTable zxc = new TimeTable(aasdasd);
asd.saveOrUpdate(zxc);

s.saveOrUpdate(obj)行的异常点;在我的dao类中,但是当我尝试与其他实体完全相同的事情时,它就不会发生[更复杂]。

有人对此有任何提示吗?

2 个答案:

答案 0 :(得分:0)

一些想法:

1)我总是在我的实体中指定@Table,只是为了确保名称/外壳是正确的。

2)我认为默认情况下SQLITE是区分大小写的,如果你没有@Table我假设(因为我从来没有这样做过)那个类名==表名并且必须配对。您是否有可能在数据库中使用小写名称?

3)也看不到你的JPA属性,你的连接信息是否可能/错误地指定了数据库? [当然,我从未使用过SQLITE,但Hibernate创建无效格式的SQL语句的可能性似乎不太可能。]

4)关于#3的最后陈述,你确实选择了正确的方言,对吗?

答案 1 :(得分:0)

好吧,我赞成你的帮助,但我只是对这个未知错误感到烦恼并将数据库切换到德比。只是切换jdbc参数工作得很顺利