DropwizardにおけるHibernateでのテーブル名定義箇所
今回一番引っかかったところ。
Dropwizardに組み込まれているHibernateのテンプレートクラスは、
- 設定ファイルに接続情報を記載
- Pojoの定義
- AbstractDAOの継承
- HQLを@NamedQueryで宣言、呼び出し
- サービス登録
だが、テーブル名の定義が@Tableと@NamedQuery内の2箇所であり、
どっちを使ってるのかいまいち。
そこで実験してみました。
というより今回引っかかったのでついでにいろいろ試しただけです。
大文字小文字の区別をこんな感じでしてみました。
Dropwizardのバージョンは0.7.0です。
No | SQLテーブル名 | POJOクラス名 | @Table | @NamedQuery | 結果 |
---|---|---|---|---|---|
1 | BBSDATA | BBSData | BBSData | BBSData | クエリ呼び出し時にNG MySQLSyntaxErrorException: Table 'Schema.BBSData' doesn't exist |
2 | BBSDATA | BBSData | BBSData | BBSDATA | Dropwizard起動時にNG QuerySyntaxException: BBSDATA is not mapped |
3 | BBSDATA | BBSData | BBSDATA | BBSData | OK |
4 | BBSDATA | BBSData | BBSDATA | BBSDATA | Dropwizard起動時にNG QuerySyntaxException: BBSDATA is not mapped |
5 | BBSDATA | BBSDATA | BBSData | BBSData | Dropwizard起動時にNG QuerySyntaxException: BBSData is not mapped |
6 | BBSDATA | BBSDATA | BBSData | BBSDATA | クエリ呼び出し時にNG MySQLSyntaxErrorException: Table 'Schema.BBSData' doesn't exist |
7 | BBSDATA | BBSDATA | BBSDATA | BBSData | Dropwizard起動時にNG QuerySyntaxException: BBSData is not mapped |
8 | BBSDATA | BBSDATA | BBSDATA | BBSDATA | OK |
意外だったのがPOJOのクラス名をみている?こと。
考察してみる。
- No1とNo3より、SQL問い合わせは@Tableを使用してるっぽい。
- No2、4、5、7より、"not mapped"と叱られているのは@NamedQuery。
- また、No2、4、5、7はPOJOクラス名≠@NamedQuery。
- 成功しているNo3、No8はPOJOクラス名=@NamedQuery。
これらより、
@NamedQueryに出てくるPOJOクラス名を@Tableで置換しているのか?
と推測。