質問

ORMLite で、整数 ID ではなく他のフィールドにリンクされている別のテーブルに制約 (外部) を定義するにはどうすればよいですか?PK ではない varchar/string フィールド。

たとえば、ORMLite サンプル コードを参照すると、「order」エンティティが「account」エンティティにリンクされています。この例では、注文は ID 列 (デフォルトだと思います)、つまり PK によってアカウントにリンクされています。

「order.account_id」から「account.id」列に制約を設定する代わりに、「order.account_name」列から「account.name」列などに制約を設定するにはどうすればよいですか?1対1の関係のためのforeignColumnNameアノテーションのようなものを探していましたが、残念ながらそれは存在しません。

ORMLite サンプルの Java コードは次のとおりです。

何も見つかりませんでした ドキュメントの情報.

(これが必要な理由は、ORMLite によって自動的に作成されたものではなく、明らかに適切にセットアップされておらず、途中で正規化されていない既存のデータベースがあるためです。しかし、既存の列名と制約を含め、その既存のデータベースを操作する必要があります。 )

役に立ちましたか?

解決

1対1の関係のためのforeignColumnNameアノテーションのようなものを探していましたが、残念ながらそれは存在しません。

編集:

この機能が追加されたのは、 ORMLite バージョン4.36では。異物という概念は当時は新しい概念でした。を参照してください。 ここのフィールドに関するjavadoc. 。引用するには:

public abstract String foreignColumnName

このテーブルに関連付けられている外部オブジェクトのフィールドの名前。推奨される外部オブジェクトの ID を使用する場合は、これを指定する必要はありません。たとえば、外部アカウントを含む Order オブジェクトがある場合、アカウント ID の代わりにアカウント名を入力することができます。

注記: これを設定すると、 foreignAutoRefresh() id フィールドがデータベースに保存されていないため、オブジェクトを更新する方法がないため、これも true に設定されます。したがって、これを設定すると、フィールドは別のデータベース クエリで自動的に更新されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top