Wenn ich das unten Programm ausführen, bekomme ich die folgende Ausnahme:Hibernate Bug oder falsches Mapping (dies könnte auf einen Fehler im Hibernate-ERROR hindeuten)?
ERROR: HCANN000002: An assertion failure occurred (this may indicate a bug in Hibernate) org.hibernate.annotations.common.AssertionFailure: Declaring class is not found in the inheritance state hierarchy: com.online.tutorial.elementCollection.map.LanguageStatement5
Ich betreibe die unter JUnit:
public class QuestionDataSetup5 {
@Test
public void testQuestionDataSetup(){
String hindiString = new String("Hindi");
String englishString = new String("English");
String chineseString = new String("chinese");
LanguageStatement5 hindiStatement = new LanguageStatement5("बिल गेट्स के जन्म की तारीख क्या है");
LanguageStatement5 englishStatement = new LanguageStatement5("What is the date of Birth of Bill Gates");
LanguageStatement5 ChineseStatement = new LanguageStatement5("什么是比尔·盖茨出生日期");
Map<String, LanguageStatement5> questionMap5 = prepareMap(hindiString, englishString, chineseString, hindiStatement, englishStatement, ChineseStatement);
Question5 dateOfBirthQuestion5 = new Question5(10, questionMap5);
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("NewPersistenceUnit");
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
entityManager.persist(hindiStatement);
entityManager.persist(englishStatement);
entityManager.persist(ChineseStatement);
entityManager.persist(dateOfBirthQuestion5);
entityManager.getTransaction().commit();
}
private Map<String, LanguageStatement5> prepareMap(String hindiString, String englishString, String chineseString, LanguageStatement5 hindiStatement, LanguageStatement5 englishStatement, LanguageStatement5 chineseStatement) {
Map<String, LanguageStatement5> questionMap5 = new HashMap<String, LanguageStatement5>();
questionMap5.put(hindiString, hindiStatement);
questionMap5.put(englishString, englishStatement);
questionMap5.put(chineseString, chineseStatement);
return questionMap5;
}
}
POJO Klassen:
package com.online.tutorial.elementCollection.map;
import javax.persistence.*;
import java.util.Map;
import java.util.TreeMap;
@Entity
@Table(name = "Question5")
public class Question5 {
@Id
@SequenceGenerator(name = "question_sequencer_generator", sequenceName = "question_sequencer" , initialValue = 10, allocationSize = 50)
@GeneratedValue(generator = "question_sequencer_generator", strategy = GenerationType.SEQUENCE)
@Column(name = "question_id")
private Long questionId;
@Column(name = "Max_Marks")
private int maxMarks;
@ElementCollection
@CollectionTable(name = "IMAGE")
@MapKeyJoinColumn(name = "LANGUAGE_REF_ID")
/* @JoinTable(name = "QUESTION_STATEMENT_MAPPING",
joinColumns = @JoinColumn(name = "QUESTION_REF_ID"),
inverseJoinColumns = @JoinColumn(name = "STATEMENT_REF_ID")) */
private Map<String, LanguageStatement5> languageNameToQuestionMap = new TreeMap<String, LanguageStatement5>();
public Question5() {
}
public Question5(int maxMarks, Map<String, LanguageStatement5> languageNameToQuestionMap) {
this.maxMarks = maxMarks;
this.languageNameToQuestionMap = languageNameToQuestionMap;
}
public Long getQuestionId() {
return questionId;
}
public void setQuestionId(Long questionId) {
this.questionId = questionId;
}
public int getMaxMarks() {
return maxMarks;
}
public void setMaxMarks(int maxMarks) {
this.maxMarks = maxMarks;
}
public Map<String, LanguageStatement5> getLanguageNameToQuestionMap() {
return languageNameToQuestionMap;
}
public void setLanguageNameToQuestionMap(Map<String, LanguageStatement5> languageNameToQuestionMap) {
this.languageNameToQuestionMap = languageNameToQuestionMap;
}
}
Eine weitere POJO Klasse:
package com.online.tutorial.elementCollection.map;
import javax.persistence.*;
@Embeddable
public class LanguageStatement5 {
@Id
@SequenceGenerator(name = "statement_sequencer_generator", sequenceName = "statement_sequencer" , initialValue = 10, allocationSize = 50)
@GeneratedValue(generator = "statement_sequencer_generator", strategy = GenerationType.SEQUENCE)
@Column(name = "statement_id")
private Long statementId;
@Column(name = "statement")
private String statement;
public LanguageStatement5() {
}
public LanguageStatement5(String statement) {
this.statement = statement;
}
public String getStatement() {
return statement;
}
public void setStatement(String statement) {
this.statement = statement;
}
}
pom.xml-Datei:
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>14</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api -->
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.2.Final</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.2.Final</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.2.Final</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-annotations -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.5.4-Final</version>
<type>pom</type>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-ehcache -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.3.2.Final</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>4.3.2.Final</version>
</dependency>
<!-- http://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>