2010-11-24 15 views
1

私はかなり休止状態の初心者ですが、私はNetbeansを使用しており、既存のスキーマからPOJOを生成するためにリバースエンジニアリングツールを休止しています。各テーブルのすべてのPOJOは、マッピングテーブル内に関連付けが作成されているのを見ることができるので、私はそれがこの方法であると思われる結合テーブルを除いて、ちょうど良い作成されます。しかし、問題は私がHBLのクエリを実行しようとすると私は私の結合テーブルの1つがマップされていない例外を取得するときに来る。私は設定ファイルにマッピングエントリがあることを知っていますが、唯一のことは私のデータモデルが間違っていることです。私は非常に大きなERモデルを持っていますが、問題のテーブルはHibernateはPOJOを生成しました

私はUser、Student、Major、およびStudentMajorテーブルを持っています。以下は私のここでステートメント

CREATE TABLE IF NOT EXISTS `Portfolio`.`User` (
    `919Number` INT(11) NOT NULL , 
    `loginId` VARCHAR(45) NOT NULL , 
    `password` VARCHAR(8) NOT NULL , 
    `userType` VARCHAR(10) NOT NULL , 
    `lastName` VARCHAR(45) NULL DEFAULT NULL , 
    `firstName` VARCHAR(45) NULL DEFAULT NULL , 
    PRIMARY KEY (`919Number`)); 

CREATE TABLE IF NOT EXISTS `Portfolio`.`Student` (
    `919Number` INT(11) NOT NULL , 
    `LEVL_CODE` VARCHAR(10) NOT NULL , 
    PRIMARY KEY (`919Number`) , 
    INDEX `919Number` (`919Number` ASC) , 
    CONSTRAINT `919Number` 
    FOREIGN KEY (`919Number`) 
    REFERENCES `Portfolio`.`User` (`919Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

CREATE TABLE IF NOT EXISTS `Portfolio`.`Major` (
    `majorCode` VARCHAR(10) NOT NULL , 
    `majorDescription` VARCHAR(45) NULL DEFAULT NULL , 
    PRIMARY KEY (`majorCode`)); 

CREATE TABLE IF NOT EXISTS `Portfolio`.`StudentMajor` (
    `919Number` INT(11) NOT NULL , 
    `majorCode` VARCHAR(10) NOT NULL , 
    PRIMARY KEY (`919Number`, `majorCode`) , 
    INDEX `studentmajor_919Number` (`919Number` ASC) , 
    INDEX `studentmajor_majorCode` (`majorCode` ASC) , 
    CONSTRAINT `studentmajor_919Number` 
    FOREIGN KEY (`919Number`) 
    REFERENCES `Portfolio`.`Student` (`919Number`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `studentmajor_majorCode` 
    FOREIGN KEY (`majorCode`) 
    REFERENCES `Portfolio`.`Major` (`majorCode`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

を作成している私の休止状態の設定ファイルは

<?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="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/portfolio</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">admin</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.current_session_context_class">jta</property> 
    <property name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property> 
    <mapping resource="com/portfolio/hibernate/mappings/User.hbm.xml"/> 
    <mapping resource="com/portfolio/hibernate/mappings/Student.hbm.xml"/> 
    <mapping resource="com/portfolio/hibernate/mappings/Major.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

であり、私はNetBeansはPOJOのgenereationツールを休止状態使用しています。

org.hibernate.MappingException: studentmajorがマップされていない クラスを参照テーブルから 協会: com.portfolio.hibernate.mappings.Student 私は、クエリを実行すると、私は以下の例外を取得します でorg.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1252) org.hibernate.cfg.AnnotationConfiguration.secondPassCompileでorg.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1170) (AT AnnotationConfiguration.java:324) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)

で org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286) は、このエラーがある可能性があります私のテーブルをモデル化した方法によって引き起こされる?どんな助けもありがとう。

私は、StudentとMajorのhbm.xmlファイルの内容を含めています。

学生:::

<hibernate-mapping> 
    <class name="com.jopos.Student" table="student" catalog="portfolio"> 
     <id name="nineOneNumber" type="int"> 
      <column name="nineOneNumber" /> 
      <generator class="assigned" /> 
     </id> 
     <many-to-one name="user" class="com.jopos.User" update="false" insert="false" fetch="select"> 
      <column name="nineOneNumber" not-null="true" unique="true" /> 
     </many-to-one> 
     <property name="levlCode" type="string"> 
      <column name="LEVL_CODE" length="10" not-null="true" /> 
    </property> 
    <set name="faculties" inverse="false" table="advises"> 
     <key> 
      <column name="studentnineOneNumber" not-null="true" /> 
     </key> 
     <many-to-many entity-name="com.jopos.Faculty"> 
      <column name="facultynineOneNumber" not-null="true" /> 
     </many-to-many> 
    </set> 
    <set name="majors" inverse="false" table="studentmajor"> 
     <key> 
      <column name="nineOneNumber" not-null="true" /> 
     </key> 
     <many-to-many entity-name="com.jopos.Major"> 
      <column name="majorCode" length="10" not-null="true" /> 
     </many-to-many> 
    </set> 
    <set name="enrolls" inverse="true"> 
     <key> 
      <column name="nineOneNumber" not-null="true" /> 
     </key> 
     <one-to-many class="com.jopos.Enroll" /> 
    </set> 
    </class> 
    </hibernate-mapping> 

主要:::

<hibernate-mapping> 
    <class name="com.jopos.Major" table="major" catalog="portfolio"> 
     <id name="majorCode" type="string"> 
      <column name="majorCode" length="10" /> 
      <generator class="assigned" /> 
     </id> 
     <property name="majorDescription" type="string"> 
      <column name="majorDescription" length="45" /> 
     </property> 
     <set name="students" inverse="true" table="studentmajor"> 
      <key> 
      <column name="majorCode" length="10" not-null="true" /> 
      </key> 
      <many-to-many entity-name="com.jopos.Student"> 
       <column name="nineOneNumber" not-null="true" /> 
      </many-to-many> 
     </set> 
    </class> 
    </hibernate-mapping> 
+0

'hbm'ファイルの内容を共有することも重要です。 –

+0

祈り、どこにStudentMajorのマッピングエントリがありますか? – crnlx

+0

Sujith、StudentMajorのPOJOは、それが結合テーブルであるため生成されませんでした。それにもかかわらず、私はマッピングエントリを持っているはずですか? – mtanzania

答えて

0

私たちは、同様の問題がありました。これは、MyISAMテーブルをMyISAMからInnoDBに変更したときに解決されました。

私はあなたの例外がに参照のうえされているStudentクラスから取得され、それは

マキシム

0

役に立てば幸い:

com.portfolio.hibernate.mappings.Student 

あなたStudent.hbm.xmlがパッケージに学生を保持している:

com.jopos.Student 

参照を解決してください 問題。com.jopos.Majorがインポート中にcom.jopos.Studentを参照していることを確認してください。テーブルstudentmajorとそのマッピングが存在することを確認してください。

関連する問題