2012-01-25 8 views
17

私はORMliteのマニュアルから賢明ではありません。クラス内で宣言することは可能ですか?このパラメータは外部キーですか?ORMlite Androidの外部キーのサポート

私はテーブルを持っています顧客:

AccountNameHolderは、テーブルAccountsのDatabaseField名を目指すべきです。どうやってするか?私はパラメータforeign = trueだけを見つけましたが、どのパラメータ、どのテーブルからそれが表すかについては何もありません。

おかげ

+2

[こちら](http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_2.html#SEC29)を参考にしてください。 –

+0

http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_2.html#Foreign-Objects –

答えて

37

AccountNameHolderはAccountsテーブルからデータベースフィールド名に向けて目指すべきです。どうやってするか?内部

@DatabaseField(foreign = true) 
private Account account; 

ORMLiteaccount_idフィールドを格納します:私はあなたが望むものを正確にはわからないが、おそらくあなたは、名前の代わりに実際のタイプであるためにあなたの外国人のフィールドを変更する必要があり

Customerテーブルの文字列名(たぶん文字列名)でも構いませんが、心配する必要はありません。 Customerをクエリすると、accountフィールドに設定されているAccountにはidフィールドが設定されていることに注意してください。 ORMLiteにもアカウントを検索させるには、foreignAutoRefresh=trueを設定する必要があります。

@Lalitが指摘したように、ここではこのテーマに関するいくつかのドキュメントがあります。私たちはドキュメントに長い時間を費やしましたので、参考にしてください。

  • Foreign auto refresh
  • Foreign objects

    +0

    ルックアップのPKでない場合、ルックアップに使用する外部カラム名を定義するにはどうすればよいですか?例 - account.idでない場合)?私はforeignColumnNameアノテーションのようなものを探していますが、存在しません。既存のデータベース(ORMLiteで作成されていない)を、すでに定義された固定列名とFKで使用しているという理由があります。 1つの制約はvarcharカラムの1対1の制約ですが、それは他のテーブルのPKではありませんが、それはユニークです。 –

    +1

    2012年4月にリリースされたバージョン4.39の 'DatabaseField'アノテーションに' foreignColumnName'が追加されました@MathiasLin。 – Gray

    +0

    'ndroidCompiledStatement'タグからのログを見て@Gray主キーとして注釈が付けられたフィールドに対してORMLiteが主キーステートメント(INTEGER PRIMARY KEY AUTOINCREMENT)を作成しますが、外部キーとして注釈が付けられたフィールドのステートメントは作成されません(FOREIGN KEY (X_Id) 参照人(Y_Id))。なぜ外部キーのために実行されないのか説明できますか? – Piotr