如何在Java Hibernate应用程序中修复java.lang.ArrayIndexOutOfBoundsException

时间:2013-10-03 06:02:25

标签: java hibernate

package com.candidjava;

import java.sql.*;
import java.io.*;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

public class AddStudent {
    private static SessionFactory sessionFactory1;

    public static void main(String args[]) throws Exception {
        if (args[0] != null || args[1] != null || args[2] != null) {// begin if
                                                                    // A
            String name = args[0];
            String name1 = args[0];
            String degree = args[1];
            String phone = args[2];
            System.out.println("Name: " + name);
            System.out.println("Degree: " + degree);
            System.out.println("Phone: " + phone);

            if ((name.equals("") || degree.equals("") || phone.equals(""))) {
                System.out.println("All informations are Required");
            } else {

                try {// begin try

                    sessionFactory1 = new Configuration().configure(
                            "com\\xml\\student1.cfg.xml").buildSessionFactory();
                } catch (Exception e) {
                    System.out.println("mathan");
                    System.out.println(e.getMessage());
                    System.err
                            .println("Initial SessionFactory creation failed."
                                    + e);

                }

                Session s1 = sessionFactory1.openSession();
                Transaction tx1 = s1.beginTransaction();
                Student1 stu1 = new Student1();
                stu1.setName(name1);
                s1.save(stu1);
                tx1.commit();
                System.out.println("Added to mysql Database");
                if (s1 != null)
                    s1.close();
            }
        }
    }
}

这是我的代码我不知道在哪里做错误但是当我运行这个应用程序然后Exception来了我创建Hibernate示例应用程序

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0     在com.candidjava.AddStudent.main(AddStudent.java:15)  这个例外来了我不知道如何解决它请帮助...

4 个答案:

答案 0 :(得分:2)

问题之一可能是您需要使用&&在以下情况下:

    if (args[0] != null || args[1] != null || args[2] != null) {// begin if

cHange to:

    if (args[0] != null && args[1] != null && args[2] != null) {

以下检查也存在相同的逻辑问题:

        if ((name.equals("") || degree.equals("") || phone.equals(""))) {

应该是:

        if ((name.equals("") && degree.equals("") && phone.equals(""))) {

答案 1 :(得分:1)

我猜你没有传递所有的参数使你的条件符合逻辑而不是

 if (args[0] != null && args[1] != null && args[2] != null) { 

而且,您在配置configure

时走错了路
student1.cfg.xml

我相信上面的文件是Student pojo。

的映射xml文件

不是hibernate configuration文件。

在处理hibernate时,请从properties文件中读取hibernate.cfg.xml而不是args。

Hibernate Configuration Official Docs

答案 2 :(得分:0)

您可以轻松地立即进行验证

package com.candidjava;

import java.sql。*;

import java.io。*;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.cfg.Configuration;

公共类AddStudent {

private static SessionFactory sessionFactory1;

public static void main(String args[]) throws Exception {
     if ((name.equals("") && degree.equals("") && phone.equals(""))) {
            System.out.println("All informations are Required");
        } else {

        String name = args[0];
        String name1 = args[0];
        String degree = args[1];
        String phone = args[2];
        System.out.println("Name: " + name);
        System.out.println("Degree: " + degree);
        System.out.println("Phone: " + phone);   

            try {// begin try

                sessionFactory1 = new Configuration().configure(
                        "com\\xml\\student1.cfg.xml").buildSessionFactory();
            } catch (Exception e) {
                System.out.println("mathan");
                System.out.println(e.getMessage());
                System.err
                        .println("Initial SessionFactory creation failed."
                                + e);

            }

            Session s1 = sessionFactory1.openSession();
            Transaction tx1 = s1.beginTransaction();
            Student1 stu1 = new Student1();
            stu1.setName(name1);
            s1.save(stu1);
            tx1.commit();
            System.out.println("Added to mysql Database");
            if (s1 != null)
                s1.close();
        }
    }
}

答案 3 :(得分:0)

本教程已经在candidjava网站上重写,试试这个新的hibernate annotations示例