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