JoinTableでJPAマッピングを設定しようとしていますが、Hibernate(JPA実装)がクエリを実行しているときに無視されるようです。中間テーブル(中間エンティティ)を使用して2つのManyToOneを持つJPAマッピング
にユーザーが私のアプリのページを取得するたびに、ユースケースを説明するために
、私は(ユーザーのIDとページのIDを持つ)USAGE_LOGテーブルに行を挿入します。
各ページはカテゴリ(設定、注文、アイテム、ニュースなど)とタイプ(たとえば、作成、更新、表示、削除)に関連しています。
私はある種の中間実体テーブルを持っています。それはページをカテゴリ+タイプにリンクします。トリプレットのように:(ページ、カテゴリ、タイプ)
私のテーブル構造
table USAGE_LOG (for information only, this one works well)
ID PrimaryKey
USER_ID Foreign key to column ID of table USER
USAGE_LOG_PAGE_ID Foreign key to column ID of table USER_LOG_PAGE
table USAGE_LOG_PAGE
ID PrimaryKey
URL VARCHAR
USER_ACTION_ID Foreign key to column ID of table USER_ACTION
table USER_ACTION
ID PrimaryKey
ACTION_CATEGORY_ID Foreign key to column ID of table ACTION_CATEGORY
ACTION_TYPE_ID Foreign key to column ID of table ACTION_CATEGORY
table ACTION_CATEGORY
ID PrimaryKey
NAME VARCHAR
table ACTION_TYPE
ID PrimaryKey
NAME VARCHAR
だからUSER_ACTIONテーブルは、それがACTION_CATEGORYとACTION_TYPEのにUSAGE_LOG_PAGEをリンクすることを詳細にテーブルを結合です同じ時間。
また、同じACTION_CATEGORYとACTION_TYPEにリンクされている複数のUSAGE_LOG_PAGEを持つことができます。
残念ながら、データベース構造を変更することはできません(これは従来のコードです)。
私はこのマッピングはコンパイルエンティティ "UsageLogPage" に
@ManyToOne
@JoinTable(name="action",
[email protected](name="ID", referencedColumnName="USER_ACTION_ID"),
[email protected](name="ACTION_CATEGORY_ID", referencedColumnName="ID"))
@Getter @Setter
private ActionCategory actionCategory;
@ManyToOne
@JoinTable(name="action",
[email protected](name="ID", referencedColumnName="USER_ACTION_ID"),
[email protected](name="ACTION_TYPE_ID", referencedColumnName="ID"))
@Getter @Setter
private ActionType actionType;
(私は@Getterと@Setterためにロンボクを使用)
を次Mapppingを試してみましたが、私は取得しようとすると、 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:不明な列「usagelogpa0_.actionCategory」「フィールドリスト」で
実際、Hibernaデータ、私は次の例外がありますTEクエリは次のとおりです。
(キー部分は、セレクトで「actionCategory」と「actionTypeが」である)
select usagelogpa0_.ID as ID1_80_0_,
usagelogpa0_.actionCategory as actionCa2_80_0_,
usagelogpa0_.actionType as actionTy3_80_0_,
usagelogpa0_.URL as URL5_80_0_
from usage_log_page usagelogpa0_
where usagelogpa0_.ID=?
これは私が期待するものではありません、Hibernateは参加を行う必要があります。
私が間違っていたことはありますか?
ありがとうございます!調査の多くの後