2017-10-30 4 views
0

私はLiferayのデフォルトの動作をカスタマイズする必要があります:現在、各組織は一意の名前を持つ必要があります - 重複する名前を許可するにはこの動作を無効にする必要があります。また、現在、データベース内の現在のOrganization_テーブルには多くのエンティティが存在します。デフォルトのLiferay組織モデルを無効にする

古いエンティティを保持しながら、デフォルトモデルをオーバーライドして一意性制約を削除することはできますか?はいの場合、私はこれにどのようにアプローチしますか?

もちろん、新しい保存されたエンティティに一意の接尾辞を追加して表示で削除することもできますが、このアプローチは厄介なようです。

+1

なぜこのようにしたいのか説明してください。私はそれを行うより良い方法があるかもしれないと思う。 –

答えて

2

デフォルトモデルをオーバーライドし、古いエンティティを保持しながら一意性制約 を削除することはできますか?

はい、どのように私はこれに近づくだろう場合は、Liferayの

すべてを上書きすることができますようはい、それは確かに、ありますか?

皮肉なアプローチ

  1. にLiferayは組織を処理し、暗黙のうちに彼らのユニークさに依存している可能性のあるすべてのの場所を特定。それは名前の一意性に依存しないためにすべてのこれらの場所を変更することが可能だ場合、私は確かにすべての場所に
  2. を見つけ
  3. 希望は評価し、それ以上私は私の変更が作る、そのすべてのものを見つけました
  4. 希望感覚
  5. は、Liferayの将来のバージョンへの変更を採用する必要があるときに、私の変更の将来の保守のためにお金を払うために多額のお金を用意しました。 10.へ

代替アプローチを、それはそれだけの価値はないと判断し、代替ソリューションに移動:

  1. この新しいディスプレイは
  2. 必要とする場合、例えば、代替名を実装決定through Expandos(カスタムフィールド)
  3. 組織の名前の代わりにExpandoの値を表示する必要がある場所を変更します。
+0

私は参照してください。だからそれは拡大しています。古い名前をexpandoに移行することをどのように提案しますか?私は、既存の組織を反復し、現在の名前を対応するexpando値にコピーする単純なフックを考えていますが、より良い方法があれば、私は疑問に思っていましたか? – foverzar

+0

「どのような方法でもapiを使用すると快適です」というのが私のお勧めです。それがフックであれば、スクリプティングコンソールやwebservice:すべてが動作しますが、どれも良くないか悪いです。 –

関連する問題