[CONTAINER-393] [S2JDBC] PropertyNameをプロパティ名として文字列などとも比較できるようにしました. Created: 2009-10-02 Updated: 2009-10-02 Resolved: 2009-10-02 |
|
Status: | Resolved |
Project: | S2Container |
Component/s: | S2JDBC |
Affects Version/s: | 2.4.39 |
Fix Version/s: | 2.4.40 |
Type: | Improvement | Priority: | Major |
Reporter: | shinsuke | Assignee: | koichik |
Resolution: | Fixed | Votes: | 0 |
Labels: | None |
Description |
プロパティ名をあらわすクラスである PropertyName において、 たとえば、 PropertyName<String> p1 = new PropertyName<String>("value"); PropertyName<String> p2 = new PropertyName<String>("value"); で p1.equals(p2) は false になります(PropertyName が equals() を実装していないため)。 jdbcManager が Map を検索のパラメータとして扱えるため、 public class XxxxForm { public String xxxCd; } public class XxxxAction { : public String index() { : Map<CharSequence, Object> param = new HashMap<CharSequence, Object>(); BeanUtil.copyProperties(xxxxForm, param); param.put(table1().xxxCd(), "新しい値"); // xxxCd() はタイプセーフAPI // xxxxForm.xxxCd の値とtable1().xxxCd()が別物として格納されます jdbcManager.selectBySqlFile(Yyy.class, "hoge.sql", param).getResultList(); : 上記のケースではどちらの値が適用されるかわからず、 ですので、PropertyName に equals を実装することで 以下のような修正をイメージしています。 Index: src/main/java/org/seasar/extension/jdbc/name/PropertyName.java =================================================================== --- src/main/java/org/seasar/extension/jdbc/name/PropertyName.java (revision 4372) +++ src/main/java/org/seasar/extension/jdbc/name/PropertyName.java (working copy) @@ -85,4 +85,19 @@ return name; } + @Override + public boolean equals(Object obj) { + if(this == obj) { + return true; + } + if(obj instanceof PropertyName<?>){ + return name.equals(obj.toString()); + } + return name.equals(obj); + } + + @Override + public int hashCode() { + return name.hashCode(); + } } |
Comments |
Comment by koichik [ 2009-10-02 ] |
対応しました. |