• 締切済み

hibernate toolsのHQLエディタについて

Eclipseパーフェクトマニュアルvol.6(技術評論者)のspring+hibernateのサンプルを作成しているのですが、 HSQLDBを使用してドライバの設定もウィンドウの設定のドライバ定義でjarファイルを追加しています。 HSQLDBは起動させています。 <問題点> hibernate toolsのHQLエディタでfrom Customerと入力するといかのようなエラーが表示さす。. hibernate.exception.SQLGrammarException: could not execute query hibernate構成のデータベースをクリックしてもなにも表示されません 接続テストでpingには成功しています session factoryは表示されています。 Hibernate動的SQLプレビューの内容は以下のとおりです。 0: sample.entity.Customer ----------------- select customer0_.ID as ID34_, customer0_.NAME as NAME34_, customer0_.ADDRESS as ADDRESS34_, customer0_.AGE as AGE34_ from T_CUSTOMER customer0_ HSQL Database Managerで接続できることは確認しています。 どうかご教授よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数3

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

あーゴメン。 hibernate.exception.SQLGrammarException: could not execute query の前後に出ている情報が欲しかったんだ。 単体でこれだけ出ているとは思えなかったのよ。 スタックトレースとか出ていればいいんだけど。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

その本持っていないので直接確認はできないけど hibernate.exception.SQLGrammarException: could not execute query 以外に出ている情報はない? たぶんもっといろいろ出力されていると思うんだけど。 どおかな?

takeshif
質問者

補足

<エラー1> org.hibernate.console.HibernateConsoleRuntimeException: Persistence unit not found <解決策1> クラスパスにhsqldb.jarとclassフォルダを追加していない mappingはあとから追加する hibernate.cfg.xmlに<mapping resource="sample/entity/Customer.hbm.xml"/>の記述があるので この分だけはマッピングに追加する必要はない applicationContext.xmlのエラー mappingファイルを登録していない <エラー2>org.hibernate.tool.hbm2x.ExporterException: File pattern not set on class org.hibernate.tool.hbm2x.GenericExporter File pattern not set on class org.hibernate.tool.hbm2x.GenericExporter <No message> <解決策2> 原因不明 一から作り直したらでなくなりました <エラー3>org.hibernate.InvalidMappingException: Could not parse mapping document from file C:\pleiades-all-in-one-java-jre_20090304\workspace\CustomerApp\src\sample\entity\Customer.hbm.xml Could not parse mapping document from file C:\pleiades-all-in-one-java-jre_20090304\workspace\CustomerApp\src\sample\entity\Customer.hbm.xml org.hibernate.DuplicateMappingException: Duplicate class/entity mapping sample.entity.Customer Duplicate class/entity mapping sample.entity.Customer org.hibernate.DuplicateMappingException: Duplicate class/entity mapping sample.entity.Customer Duplicate class/entity mapping sample.entity.Customer <解決策3> 原因不明 一から作り直したらでなくなりました <エラー4>org.hibernate.MappingException: Association references unmapped class: sample.entity.OrderDetail Association references unmapped class: sample.entity.OrderDetail <No message> <解決策4> 原因不明 一から作り直したらでなくなりました 以上です、ご教授よろしくおねがいします。

関連するQ&A

  • hibernate.cfg.xmlの設定

    現在、hibernateを使用したバッチを作成しております。 hibernateの設定について教えていただきたい事があり、質問いたしました。 【hibernate.cfg.xml 例】 <?xml version="1.0" ?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd" > <hibernate-configuration> <session-factory> <!--MySQL JDBC Driver connection --> <property name="connection.driver_class">org.gjt.mm.mysql.Driver </property> <property name="connection.url">jdbc:mysql:///test</property> <property name="connection.username">root</property> <property name="connection.password">12345</property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect </property> <property name="show_sql">true</property> <property name="use_outer_join">true</property> <!-- Mapping files --> <mapping resource="test.hbm.xml"/> </session-factory> </hibernate-configuration> 上記のproperty nameで指定しているconnection.usernameやconnection.urlの設定している値を 外部ファイルから取得したりといった事は可能でしょうか? <property name="connection.username">"${jdbc.username}"</property> といった感じで取得できるのかなと思っていたのですが。。。 こちらのサイトに書いてある内容を参考に試してみているのですが、外部ファイルから値が取得できないで困っています。 【参考にしたページ】 http://stackoverflow.com/questions/2370354/how-can-i-set-hibernate-database-config-from-outside-config-file 尚、 hibernate.cfg.xmlの配置場所は/src/main/java/配下で、 <property name="connection.username">root</property> <property name="connection.password">12345</property> と、直接設定値を指定した場合は問題なくhibernateが動作してDBから値も取れています。 /src/main/resouses/配下に置いているjdbc.propertiesのリソースファイルから 接続情報を取得してhibernate.cfg.xmlのproperty name="connection.username"などに値が渡されるようにしたいのですが、可能でしょうか? ずいぶん調べたのですが、それといった情報が得られず困り果て質問するに至りました。 アドバイスいただけないでしょうか。

    • ベストアンサー
    • Java
  • HQLについて分らない

    ところがあります。 Entityを以下の様に定義したとします。 public class Member implements Serializable { private Integer no; private String name; public Integer getNo(){return this.no;} public void setNo(Integer no){this.no = no;} public Member(){} public String getName(){return this.name;} public void setName(String name){this.name = name;} } その場合にHQLにおいて Query findquery=session.createQuery("select m from Member m where m.no= :no"); findquery.setInteger( "no", no.intValue() ); というように書くことが出きるのでしょうか? noはintでなくIntegerなのに m.no= :no などと記してよいのでしょうか?(Integer=intになっている) それともHQLを使うためには Entityでnoの型をIntegerでなくintにしなければならないのでしょうか?

    • ベストアンサー
    • Java
  • nextvalについて

    Customer_IDに格納する新しい値を取得し、新規顧客に関する情報をCustomer表に格納するストアードファンクションの例 create or replace function Get_New_Customer_ID (Salutation varchar2, Last_Name varchar2, First_Name varchar2, Street_Address varchar2, City varchar2, State varchar2, Zipcode varchar2, Home_Phone varchar2, Work_Phone varchar2) return number is New_Customer_ID number(4); begin select Customer_Sequence.nextval into New_Customer_ID from dual; insert into Customer (Customer_ID, Salutation, Last_Name, First_Name, Street_Address, City, State, Zipcode, Home_Telephone_Number, Work_Telephone_Number) values (New_Customer_ID, Salutation, Last_Name, First_Name, Street_Address, City, State, Zipcode, Home_Phone, Work_Phone); return New_Customer_ID; end; / において、 select Customer_Sequence.nextval into New_Customer_ID from dual; のCustomer_Sequence.nextvalがどういう意味なのかわからくて困っております。dualという表しか使っていないのに、Customer_Sequenceという表のnextvalという列から取り出しているように見えて違和感を感じるのです。また、新しい値を取得というのは、ユーザがキーボードで打ち込むのでしょうか? また、dualはシステムで用意されている表なのでしょうか?

  • 次のデータ抽出を(高速に)行うSQLを教えてくださ

    自分がフォローしている人のつぶやきと、じぶんの呟きを含めて、日付順で表示するSQLを検討しています。 MYSQLの構文がかなり複雑になってしまったために、 もっと簡単に高速にSQLで記述する方法がありましたら教えて頂けませんでしょうか。 長文になり申し訳ございませんが、アドバイスいただけると幸いです。 テーブルは以下の3種類です。 ●cutomer:登録者名を記録 <構造> id(auto increment,key),name(名前) <サンプルデータ> 0,"太郎" 1,"次郎" 2,"三郎" 3,"四郎" ●follow:誰が(my_user_id)、誰をフォローしているか(target_user_id)を記録 <構造> id(auto increment,key),my_user_id,target_user_id <サンプルデータ> 0,1,0 0,1,2 ●tweet:つぶやきを記録 <構造> id(auto increment,key),user_id,tweet_comment(つぶやき),date(つぶやき日時) <サンプルデータ> 0,1,"次郎のつぶやきです","2011-01-01 00:00:00" 1,2,"三郎のつぶやきです","2011-02-01 00:00:00" 2,0,"太郎のつぶやきです","2011-03-01 00:00:00" 3,1,"次郎のつぶやきです","2011-04-01 00:00:00" 4,3,"四郎のつぶやきです","2011-05-01 00:00:00" 上記のサンプルデータを用いて、期待する出力結果をご説明します。 例として、入力値を「次郎」とすると、 「次郎」のつぶやきと、次郎がフォローしている太郎と三郎の呟きを表示したいです。 "次郎","次郎のつぶやきです","2011-01-01 00:00:00" "三郎","三郎のつぶやきです","2011-02-01 00:00:00" "太郎","太郎のつぶやきです","2011-03-01 00:00:00" "次郎","次郎のつぶやきです","2011-04-01 00:00:00" 現状は、次郎とつぶやきselectと、次郎がフォローする太郎と三郎のつぶやきselectを unionで結合する形式なっており、もうちょっと賢くできないものかと悩んでいます。 なお、対象の次郎のuser_id(サンプルでは"1")は予めわかっているものとします。 ( select customer.name,tweet.tweet_comment,tweet.date from customer,tweet where customer.id = 1 and customer.id = tweet.user_id ) union ( select customer.name,tweet.tweet_comment,tweet.date from customer,tweet,follow where follow.my_user_id = 1 and follow.target_user_id = tweet.user_id and tweet.user_id = customer.id ) order by table_tweet.date asc

    • ベストアンサー
    • MySQL
  • PHP postgresql 指定データの抽出

    sampleというテーブルに id name address tel という列があるとして、そこにいくつかのデータが入っています。 「id=1のtelのデータが欲しい」 というのはどう書けばいいのでしょうか。 $sql = sprintf("SELECT * FROM sample WHERE id ='1'"); $recordset = pg_query($sql); print($recordset['tel']); 上記を作ってみましたが、何が足りないのでしょうか。

    • 締切済み
    • PHP
  • Spring MVC + JPA + MySQL

    STSの[Simple Spring Web Maven]プロジェクトにおいて、Hibernate JPA経由でMySQLに接続し、データのselect・insertをすることについて、STS付属のtcServerで成功しました。 しかし、[Run as]→[Maven install]でwarを出力し、Tomcatにデプロイすると失敗します。 エラーメッセージ(下記のようにvalidation関係)を元に調べると、stackoverflowに何ページか(例えばhttp://stackoverflow.com/questions/21950607/abstractmethoderror-on-deploying-spring-4-0-in-tomcat-6のような情報)あったので、 pom.xmlのhibernate-validatorやvalidation-apiのバージョンを変えて色々試した結果が下記です。 ●hibernate-validatorを4.2.0.Final、validation-apiを1.1.0.Finalにすると 「Web ページが見つかりません」HTTP 404 ●hibernate-validatorを4.3.1.Finalや5.0.1.Finalや5.1.1.Final、validation-apiを1.1.0.Finalにすると HTTPステータス 500 - サーブレット dispatcherServlet のServlet.init()が例外を投げました 原因 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) (中略) 原因 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:41) javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276) org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:188) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541) (中略) ●hibernate-validatorを5.1.1.Final、validation-apiを1.0.0.GAにすると HTTPステータス 500 - サーブレット dispatcherServlet のServlet.init()が例外を投げました 原因 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) (中略) 原因 java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:41) javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269) org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:188) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541) (中略) 原因 java.lang.ClassNotFoundException: javax.validation.ParameterNameProvider org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:41) javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269) ちなみに、MySQLを使わないSpringプロジェクトはTomcatで正常動作しています。 また、フレームワークを使わずにサーブレットのみで書き、JDBCでMySQLに接続しSQL操作するプロジェクトはTomcatで正常動作しています。 また、war出力時にエラーや警告はありません。 解決策をどうかご教示ください。 宜しくお願いします。 [環境] Windows 7 Tomcat 7 MySQL 5 Spring Tool Suite 3.6.0

  • Spring MVC + Thymeleaf

    Spring MVC + Thymeleafを勉強している中で、下記のサイトを参考に勉強しておりますが、 どうしてもエラーが解消されなく、投稿させていただきました。 ◼︎環境 mac 10.10.4 eclipse 4.4 tomcat 8.0.21 java 1.8.0_31 mysql 5.6.25 pom.xml 内設定(一部抜粋) <!-- Spring / Hibernate version --> <version.spring>4.2.0.RELEASE</version.spring> <version.spring.data>1.8.2.RELEASE</version.spring.data> <version.spring.boot>1.2.5.RELEASE</version.spring.boot> <version.hibernate>4.3.5.FINAL</version.hibernate> <version.aopalliance>1.0</version.aopalliance> <version.thymeleaf>2.1.4.RELEASE</version.thymeleaf> <!-- Test --> <version.junit>4.11</version.junit> <version.dbunit>2.4.9</version.dbunit> <!-- Hibernate and JPA --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${version.hibernate}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${version.hibernate}</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> <dependency> <groupId>org.hibernate.java-persistence</groupId> <artifactId>jpa-api</artifactId> <version>2.0-cr-1</version> </dependency> <!-- JSR 303 with Hibernate Validator --> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.0.0.GA</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.3.0.Final</version> </dependency> ◼︎参考サイト http://brissyu.blogspot.jp/2014/07/spring-mvc-thymeleaf-web003.html ◼︎問題 上記サイトで、DBテストを実施しておりますが下記エラーが表示されてしまう。 2015/08/02 14:16:56:386 WARN - AnnotationConfigWebApplicationContext.refresh Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/base/init/DbConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence ◼︎試したこと バージョンなど、参考サイト(http://brissyu.blogspot.jp/2014/07/spring-mvc-thymeleaf-web001.html)に合わせて、検証もしましたがpoxの設定でHibernate 4.1.9.FINALを設定しましたが、エラーになり現状のバージョンで設定で実施しております。 お手数をお掛けいたしますが、上記解決方法のご教授をお願いいたします。

  • 横並び表記について

    すみません。。 ACCESSで以下のようなtbテーブルを横に表示たいと思うのですが、 idが飛ぶと歯抜け状態になってしまいます。。 これをidが飛んでも詰める形にするにはどのようにすればよいでしょうか。。 tb id name 1 a 2 b 3 c 4 d 5 e 7 g 実行結果 a.id a.name b.id c.name c.id c.name 1 a 2 b 3 c 4 d 5 e 7 g sql構文 SELECT a.*, b.*, c.* FROM ((SELECT * FROM tb1 WHERE id Mod 3=1) AS a LEFT JOIN (SELECT * FROM tb1 WHERE id Mod 3=2) AS b ON a.id+1=b.id) LEFT JOIN (SELECT * FROM tb1 WHERE id Mod 3=0) AS c ON a.id+2=c.id ORDER BY a.id

  • ListviewにDB内容を表示し方について

    DBには ID 、NEME 、TELNUMBERがあります。 この内容をListViewのID(ID)、名前(NAME)、電話番号(TELNUMBER)に表示したいですがよく分かりません。どなたがご存知のがた教えて下さい。   Private Sub Form1_Load(ByVal 省略・・・・・・・・・   myConnection.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=省略.mdb" Try 'DBに接続 myConnection.Open() Catch ex As Exception MsgBox("接続失敗しました。") End Try Const myList As String = "SELECT ID FROM T_TABLE " ''コネクションの設定 myCommand.CommandText = myList 'テーブルからデータを取る myAdapter.SelectCommand = myCommand DataSet1.Clear() myAdapter.Fill(DataSet1, "USERLIST") ここからよく分かりませんので、教えて下さい。 宜しくお願いします。VB.NET初心者です。

  • SQL文 テーブルの作成方法について

    以下のようなTABLE1からTABLE2というテーブルを作成したいと考えております。 元テーブル(TABLE1)は、IDという項目がキーとなってデータが入っており、NAME1とNAME2という項目があります。 (NAME1は必ず値が入っていますが、NAME2は値が入っていない場合もあります) 加工後のテーブル(TABLE2)で、NAME1とNAME2の値を結合した形で結果を出力したいと考えております。 (新たに作成したNAMEカラムは、必ずしもユニークになっているとは限りません。NAMEとIDを組み合わせるとユニークになります) ---------------------------------------------------- ■ TABLE1 ID NAME1 NAME1_CATE NAME2 NAME2_CATE ---------------------------------------------------- 001 鈴木 A 山田 B 002 山本 A 003 佐藤 A 高橋 B ---------------------------------------------------- ---------------------------------------------------- ■ TABLE2 ID NAME NAME_CATE ---------------------------------------------------- 001 鈴木 A 001 山田 B 002 山本 A 003 佐藤 A 003 高橋 B ・・・ ---------------------------------------------------- いろいろ試していますが、どのようなSQL文を書いたらよいのか分かりません。 現状のSQL(エラーとなります) ====================================================================================== SELECT ID, NAME, NAME_CATE FROM (SELECT ID, NAME1 as NAME, NAME1_CATE as NAME_CATE FROM TABLE1 WHERE NAME1<>NULL) JOIN (SELECT ID, NAME2 as NAME, NAME2_CATE as NAME_CATE FROM TABLE1 WHERE NAME2<>NULL) ====================================================================================== 初歩的な質問になるかと思ってしまうかと思いますが、よろしくお願いいたします。

専門家に質問してみよう