[ https://issues.apache.org/jira/browse/IBATIS-590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12696183#action_12696183 ]
Alisson Gomes Cerqueira commented on IBATIS-590: ------------------------------------------------ >1. Will we allow multiple levels of nesting (xxx.yyy.zzz)? Yes, ibatis supported xxx.yyy.zzz >2. Should Ibator generate all the intermediate classes too? (e.g., in your >example do you expect Ibator to generate the Phone class?) No. Don't responsability ibator generate class intermediate. >3. What if there is more than one attribute on the nested class? For example, >in this case: > <columnOverride column="FK_PHONE_ID" property="phone.id" > javaType="model.Phone" /> > <columnOverride column="FK_PHONE_NUMBER" property="phone.number" > javaType="model.Phone" /> > With the patch above, Ibator would generate two getPhone, setPhone methods > leading to compile errors. Only one atribute phone in class, one method getPhone and one method setPhone. >4. What if there are inconsistencies? For example, what should be generated in >this case: > <columnOverride column="FK_PHONE_ID" property="phone.id" > javaType="model.Phone" /> > <columnOverride column="FK_PHONE_NUMBER" property="phones.number" > javaType="model.Phone" /> If write "phone" and "phones", so two attributes! >5. What if the Phone class is used by more than one table? Ibator would need >to keep track of classes that had already been generated so it wouldn't >generate multiple >copies of the Phone class. The class intermediate dont generate. >Ibator was designed to have a one-to-one match between tables and generated >classes. >This is pushing Ibator more into the realm of generating a real object model. >I'm not completely opposed to this idea, but it requires quite a bit more work >than the patch >above suggests if you want to make it work in a general sense. I think the ibator must support the configuration that supports Ibatis (SqlMap.xml). I agree that the effort is much greater than suggested. Thanks > Generate Model for property by Ibator 1.2.1 > ------------------------------------------- > > Key: IBATIS-590 > URL: https://issues.apache.org/jira/browse/IBATIS-590 > Project: iBatis for Java > Issue Type: New Feature > Components: Tools > Reporter: Alisson Gomes Cerqueira > > When generate class java for bean model, by example: > <table schema="XXX" domainObjectName="Person"> > <columnOverride column="FK_PHONE" property="phone.id" > javaType="model.Phone" /> > </table> > Code generated: > public class Person { > private Phone phone.id; > public Phone getPhone.id() { > return phone.id; > } > public void setPhone.id(Phone phone.id) { > return phone.id; > } > } > Solution, create method: > public static String getBeanNamePropertyValid(String javaProperty) > { > String property = javaProperty; > if (property != null && !"".equals(property)) > { > int i = property.indexOf('.'); > if (i >= 0) > { > property = property.substring(0, i); > } > } > return property; > } > Modified methods: > public abstract class BaseModelClassGenerator extends AbstractJavaGenerator { > public Field getJavaBeansField(IntrospectedColumn introspectedColumn) > { > ... > String property = > StringUtility.getBeanNamePropertyValid(introspectedColumn.getJavaProperty()); > ... > } > public Method getJavaBeansSetter(IntrospectedColumn introspectedColumn) > { > .... > String property = > StringUtility.getBeanNamePropertyValid(introspectedColumn.getJavaProperty()); > .... > } > public Method getJavaBeansGetter(IntrospectedColumn introspectedColumn) > { > ... > String property = > StringUtility.getBeanNamePropertyValid(introspectedColumn.getJavaProperty()); > ... > } > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.