よくわからないままHeroku ConnectのEdit Mappingの画面で「Database→Salesforce」欄の「Write database updates to Salesforce~」のチェックボックスをチェックすると、画面上部に警告「Read-write mappings require a unique identifier to be specified. Unique identifiers must be defined as unique External ID fields in Salesforce.」が表示された
以下の手順で同期ができるようになった
Salesforceの対象オブジェクトにカスタム項目を追加する
- データ型:テキスト
- 項目の表示ラベル:<自由> ※「HerokuID」等
- 文字数:36 ※UUIDの長さ
- 項目名:<自由> ※「HerokuId」等
- 必須項目:OFF
- ユニーク:ON
- 大文字と小文字を区別しない ※「する」でも可
- 外部ID:ON
- 項目レベルセキュリティ
- 参照可能:ON
- 参照のみ:ON
- ページレイアウトへの追加:なし
再度「Write database updates to Salesforce~」のチェックボックスをチェックする
この時、メッセージ途中のドロップダウン(属性追加前の選択肢は「None」のみだった)で追加属性を選ぶ
Entityクラスに以下のフィールドと値設定処理を記述する
(項目名が「HerokuId」の例)
@Column(name = "herokuid__c", length = 36, updatable = false)
@Setter(AccessLevel.NONE)
private String herokuId;
@PrePersist
private void onPrePersist() {
herokuId = UUID.randomUUID().toString();
}
おまけ:Heroku ConnectはSalesforceのAPIコール数制限を消費しないとのこと
以上