Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse中的Hibernate:java.lang.ArrayIndexOutOfBoundsException位于oracle.jdbc.driver.OracleSql.main(OracleSql.java:1032)_Java_Eclipse_Oracle_Hibernate - Fatal编程技术网

Eclipse中的Hibernate:java.lang.ArrayIndexOutOfBoundsException位于oracle.jdbc.driver.OracleSql.main(OracleSql.java:1032)

Eclipse中的Hibernate:java.lang.ArrayIndexOutOfBoundsException位于oracle.jdbc.driver.OracleSql.main(OracleSql.java:1032),java,eclipse,oracle,hibernate,Java,Eclipse,Oracle,Hibernate,我刚开始冬眠。我正在尝试一个示例应用程序。无论何时运行DataStore.java还是FetchData.java java.lang.ArrayIndexOutOfBoundsException:0 位于oracle.jdbc.driver.OracleSql.main(OracleSql.java:1032) 我无法找到导致此异常的原因。应用程序是基本的。只需创建两个表,一个表包含问题ID和相应的问题,另一个表包含答案,相应的问题ID作为外键。这是我第一次尝试hibernate。如果有人能解

我刚开始冬眠。我正在尝试一个示例应用程序。无论何时运行DataStore.java还是FetchData.java

java.lang.ArrayIndexOutOfBoundsException:0 位于oracle.jdbc.driver.OracleSql.main(OracleSql.java:1032)

我无法找到导致此异常的原因。应用程序是基本的。只需创建两个表,一个表包含问题ID和相应的问题,另一个表包含答案,相应的问题ID作为外键。这是我第一次尝试hibernate。如果有人能解决这个问题,我将感激他们。提前谢谢

DataStore.java

import java.util.ArrayList;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class DataStore {
public static void main(String[] args) {
    Session session = new Configuration().configure("hibernate.cfg.xml")
            .buildSessionFactory().openSession();
    Transaction t = session.beginTransaction();

    ArrayList<String> list1 = new ArrayList<String>();
    list1.add("java is a programming language");
    list1.add("java is a platform");

    ArrayList<String> list2 = new ArrayList<String>();
    list2.add("Servlet is an Interface");
    list2.add("Servlet is an API");

    Question question1 = new Question();
    question1.setQname("What is Java?");
    question1.setAnswers(list1);

    Question question2 = new Question();
    question2.setQname("What is Servlet?");
    question2.setAnswers(list2);

    session.persist(question1);
    session.persist(question2);

    t.commit();
    session.close();
    System.out.println("success");
}
}
编辑:只有在问题.hbm.xml中添加以下部分时,才会出现此问题

<list name="answers" table="Answers">  
<key column="id"></key>  
<index column="type"></index>  
<element column="answer" type="string"></element>
<one-to-many class="Answer" />   


使用单个类/表进行简单的插入和更新就可以了。如果有多个类或表具有外键,则会弹出异常。

这似乎是OracleSQL的问题。我建议确保您拥有最新的JDBC,因为它可能已被修补。

发布完整的堆栈跟踪,包括根本原因。@RomanC:这就是问题所在。控制台中显示的唯一输出是“java.lang.ArrayIndexOutOfBoundsException:0 at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1032)”,没有堆栈跟踪,没有其他内容。如果可能的话,请检查一下代码。我只是想重定向。@Tiny。这个链接说的是做清洁。而且,对我来说一切都很好。当我添加一些我在编辑中提到的功能时,问题就出现了。!我使用oracle11g。使用ojdbc14-1.0和ojdbc6进行了尝试,但没有结果。
<?xml version="1.0" encoding="UTF-8"?>
<class name="Question" table="Question">  
<id name="id" type="int" column="id">  
<generator class="increment"></generator>  
</id>  
<property name="qname" column="qname" type="string"></property>  
<list name="answers" table="Answers">  
<key column="id"></key>  
<index column="type"></index>  
<element column="answer" type="string"></element>
<one-to-many class="Answer" />   
</list>  
</class>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
<hibernate-configuration>  
<session-factory>  
<property name="hbm2ddl.auto">update</property>  
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>  
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>  
<property name="connection.username">testuser</property>  
<property name="connection.password">amudhan</property>  
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>  
<mapping resource="question.hbm.xml"/>  
</session-factory>  
</hibernate-configuration>  
import java.util.List;
public class Question {
private int id;
private String qname;
private List<String> answers;

/**
 * @return the id
 */
public int getId() {
    return id;
}

/**
 * @param id
 *            the id to set
 */
public void setId(int id) {
    this.id = id;
}

/**
 * @return the qname
 */
public String getQname() {
    return qname;
}

/**
 * @param qname
 *            the qname to set
 */
public void setQname(String qname) {
    this.qname = qname;
}

/**
 * @return the answers
 */
public List<String> getAnswers() {
    return answers;
}

/**
 * @param answers
 *            the answers to set
 */
public void setAnswers(List<String> answers) {
    this.answers = answers;
}
}
public class Answer {
private int id;
private String answer;
private String posterName;

/**
 * @return the id
 */
public int getId() {
    return id;
}

/**
 * @param id
 *            the id to set
 */
public void setId(int id) {
    this.id = id;
}

/**
 * @return the answer
 */
public String getAnswer() {
    return answer;
}

/**
 * @param answer
 *            the answer to set
 */
public void setAnswer(String answer) {
    this.answer = answer;
}

/**
 * @return the posterName
 */
public String getPosterName() {
    return posterName;
}

/**
 * @param posterName
 *            the posterName to set
 */
public void setPosterName(String posterName) {
    this.posterName = posterName;
}
}
<list name="answers" table="Answers">  
<key column="id"></key>  
<index column="type"></index>  
<element column="answer" type="string"></element>
<one-to-many class="Answer" />