You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Alisson Gomes Cerqueira (JIRA)" <ib...@incubator.apache.org> on 2009/04/06 19:16:12 UTC
[jira] Commented: (IBATIS-590) Generate Model for property by
Ibator 1.2.1
[ 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.