toXxxx/xxxxArray

Cayenneはすごーく気に入っているんだけど、リレーション関係のプロパティ名の付け方がイマイチ気に入らない。

  • Child→Parent : getToParent()
  • Parent→Children : getChildArray()

どうにかできないのかなぁ、と思ってソース読んでたら、NamedObjectFactoryというクラスでネーミングルールを決めているよう。

        /** 
         * Returns generated name for the ObjRelationships. 
         * For to-one case and entity name "xxxx" it generates name "toXxxx".
         * For to-many case and entity name "Xxxx" it generates name "xxxxArray".
         */
        protected String nameBase() {
            if (target == null) {
                return "untitledRel";
            }

            String name = target.getName();
            return (toMany)
                ? Character.toLowerCase(name.charAt(0)) + name.substring(1) + "Array"
                : "to" + Character.toUpperCase(name.charAt(0)) + name.substring(1);
        }

拡張できない感じだし、コード修正して、ビルドしなおすかなぁ…。