Need help,error to Automatic Persistence Use Xml

classic Classic list List threaded Threaded
2 messages Options
wufangyi wufangyi
Reply | Threaded
Open this post in threaded view
|

Need help,error to Automatic Persistence Use Xml

This post has NOT been accepted by the mailing list yet.
I use the ignite - schema - import creates a CacheJdbcPojoStore POJO and XML configuration, I'm running error (with a server or client mode), can not find the reason for the error:

Caused by: javax.cache.CacheException: Failed to find mapping description [cache=REPORTTABLESWXC, typeId=class org.apache.ignite.UserinfoKey]. Please configure JdbcType to associate cache 'REPORTTABLESWXC' with JdbcPojoStore.


I don't know if I made a mistake there, please help me.



run code:
          public static void main(String[] args) throws Exception {

                try {
                        Ignite ignite = Ignition.start("config/client-config.xml");
                        IgniteCache<UserinfoKey, Userinfo> cache = ignite.cache("REPORTTABLESWXC");
                        cache.loadCache(null);
                        UserinfoKey uk = new UserinfoKey("520000tj");
                       
                        Userinfo ui = cache.get(uk);
                        System.out.println(ui.getUiname());
                       
                        System.out.println("输入任意键回车退出!");
                        System.in.read();
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        System.exit(0);
                }

        }




CacheConfig:

<bean id="reporttableswxcCache" class="org.apache.ignite.configuration.CacheConfiguration">     
               
                <property name="name" value="REPORTTABLESWXC" />
               
               
                <property name="readThrough" value="true"/>
               
                <property name="writeThrough" value="true"/>
                ...
               
                <property name="cacheStoreFactory">
                        <bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory">
                               
                                <property name="dataSourceBean" value="simpleDataSource" />
                               
                               
                                <property name="dialect">
                                        <bean class="org.apache.ignite.cache.store.jdbc.dialect.OracleDialect" />
                                </property>
                               
                               
                                <property name="types">
                                        <list>
                                                <bean class="org.apache.ignite.cache.store.jdbc.JdbcType">
                                                        <property name="databaseSchema" value="REPORTTABLESWXC"/>
                                                        <property name="databaseTable" value="USERINFO"/>
                                                        <property name="keyType" value="org.apache.ignite.UserinfoKey"/>
                                                        <property name="valueType" value="org.apache.ignite.Userinfo"/>
                                                        <property name="keyFields">
                                                                <list>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIID"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiid"/>
                                                                        </bean>
                                                                </list>
                                                        </property>
                                                        <property name="valueFields">
                                                                <list>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIID"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiid"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIASCRIPTION"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiascription"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.TIMESTAMP"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UICREATEDATE"/>
                                                                                <property name="javaFieldType" value="java.sql.Timestamp"/>
                                                                                <property name="javaFieldName" value="uicreatedate"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIEMAIL"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiemail"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UILINE"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiline"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIMOBILE"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uimobile"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UINAME"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiname"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UINAMEPY"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uinamepy"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIOFFICEPHONE"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiofficephone"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIPASSWORD"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uipassword"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIQQ"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiqq"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIREMARKS"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uiremarks"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UISTATE"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uistate"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIVPMN"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uivpmn"/>
                                                                        </bean>
                                                                        <bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
                                                                                <property name="databaseFieldType">
                                                                                        <util:constant static-field="java.sql.Types.VARCHAR"/>
                                                                                </property>
                                                                                <property name="databaseFieldName" value="UIDEPT"/>
                                                                                <property name="javaFieldType" value="java.lang.String"/>
                                                                                <property name="javaFieldName" value="uidept"/>
                                                                        </bean>
                                                                </list>
                                                        </property>
                                                </bean>
                                        </list>
                                </property>
                        </bean>
                </property>
               
                <property name="queryEntities">
                        <list>
                                 <bean class="org.apache.ignite.cache.QueryEntity">
                                        <property name="keyType" value="org.apache.ignite.UserinfoKey"/>
                                        <property name="valueType" value="org.apache.ignite.Userinfo"/>
                                        <property name="fields">
                                                <util:map map-class="java.util.LinkedHashMap">
                                                        <entry key="uiid" value="java.lang.String"/>
                                                        <entry key="uiascription" value="java.lang.String"/>
                                                        <entry key="uicreatedate" value="java.sql.Timestamp"/>
                                                        <entry key="uiemail" value="java.lang.String"/>
                                                        <entry key="uiline" value="java.lang.String"/>
                                                        <entry key="uimobile" value="java.lang.String"/>
                                                        <entry key="uiname" value="java.lang.String"/>
                                                        <entry key="uinamepy" value="java.lang.String"/>
                                                        <entry key="uiofficephone" value="java.lang.String"/>
                                                        <entry key="uipassword" value="java.lang.String"/>
                                                        <entry key="uiqq" value="java.lang.String"/>
                                                        <entry key="uiremarks" value="java.lang.String"/>
                                                        <entry key="uistate" value="java.lang.String"/>
                                                        <entry key="uivpmn" value="java.lang.String"/>
                                                        <entry key="uidept" value="java.lang.String"/>
                                                </util:map>
                                        </property>
                                        <property name="indexes">
                                                <list>
                                                        <bean class="org.apache.ignite.cache.QueryIndex">
                                                                <property name="name" value="SYS_C00151331"/>
                                                                <property name="indexType">
                                                                        <util:constant static-field="org.apache.ignite.cache.QueryIndexType.SORTED"/>
                                                                </property>
                                                                <property name="fields">
                                                                        <map>
                                                                                <entry key="UIID" value="true"/>
                                                                        </map>
                                                                </property>
                                                        </bean>
                                                        <bean class="org.apache.ignite.cache.QueryIndex">
                                                                <property name="name" value="USERINFO_UIDEPT_UINAME"/>
                                                                <property name="indexType">
                                                                        <util:constant static-field="org.apache.ignite.cache.QueryIndexType.SORTED"/>
                                                                </property>
                                                                <property name="fields">
                                                                        <map>
                                                                                <entry key="UIDEPT" value="true"/>
                                                                        </map>
                                                                </property>
                                                        </bean>
                                                </list>
                                        </property>
                                </bean>
                        </list>
                </property>
        </bean>


server and client config:

    <import resource="myCacheConfiguration.xml"/>
    <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">       
               
               
                <property name="clientMode" value="false" />
               
               
                <property name="peerClassLoadingEnabled" value="true"/> 
               
                <property name="publicThreadPoolSize" value="8"/>
               
                <property name="systemThreadPoolSize" value="4"/>
                ...
               
               
                <property name="cacheConfiguration">
                        <list>
                                <ref bean="reporttableswxcCache" /> 
                        </list>
                </property>
                ...
               
        </bean>       

UserinfoKey  and   Userinfo:


/**
 * UserinfoKey definition.
 *
 * Code generated by Apache Ignite Schema Import utility: 01/29/2016.
 */
public class UserinfoKey implements Serializable {
    /** */
    private static final long serialVersionUID = 0L;

    /** Value for uiid. */
    private String uiid;

    /**
     * Empty constructor.
     */
    public UserinfoKey() {
        // No-op.
    }

    /**
     * Full constructor.
     */
    public UserinfoKey(
        String uiid
    ) {
        this.uiid = uiid;
    }

    /**
     * Gets uiid.
     *
     * @return Value for uiid.
     */
    public String getUiid() {
        return uiid;
    }

    /**
     * Sets uiid.
     *
     * @param uiid New value for uiid.
     */
    public void setUiid(String uiid) {
        this.uiid = uiid;
    }

    /** {@inheritDoc} */
    @Override public boolean equals(Object o) {
        if (this == o)
            return true;

        if (!(o instanceof UserinfoKey))
            return false;

        UserinfoKey that = (UserinfoKey)o;

        if (uiid != null ? !uiid.equals(that.uiid) : that.uiid != null)
            return false;

        return true;
    }

    /** {@inheritDoc} */
    @Override public int hashCode() {
        int res = uiid != null ? uiid.hashCode() : 0;

        return res;
    }

    /** {@inheritDoc} */
    @Override public String toString() {
        return "UserinfoKey [uiid=" + uiid +
            "]";
    }
}



/**
 * Userinfo definition.
 *
 * Code generated by Apache Ignite Schema Import utility: 01/29/2016.
 */
public class Userinfo implements Serializable {
    /** */
    private static final long serialVersionUID = 0L;

    /** Value for uiid. */
    private String uiid;

    /** Value for uiascription. */
    private String uiascription;

    /** Value for uicreatedate. */
    private java.sql.Timestamp uicreatedate;

    /** Value for uiemail. */
    private String uiemail;

    /** Value for uiline. */
    private String uiline;

    /** Value for uimobile. */
    private String uimobile;

    /** Value for uiname. */
    private String uiname;

    /** Value for uinamepy. */
    private String uinamepy;

    /** Value for uiofficephone. */
    private String uiofficephone;

    /** Value for uipassword. */
    private String uipassword;

    /** Value for uiqq. */
    private String uiqq;

    /** Value for uiremarks. */
    private String uiremarks;

    /** Value for uistate. */
    private String uistate;

    /** Value for uivpmn. */
    private String uivpmn;

    /** Value for uidept. */
    private String uidept;

    /**
     * Empty constructor.
     */
    public Userinfo() {
        // No-op.
    }

    /**
     * Full constructor.
     */
    public Userinfo(
        String uiid,
        String uiascription,
        java.sql.Timestamp uicreatedate,
        String uiemail,
        String uiline,
        String uimobile,
        String uiname,
        String uinamepy,
        String uiofficephone,
        String uipassword,
        String uiqq,
        String uiremarks,
        String uistate,
        String uivpmn,
        String uidept
    ) {
        this.uiid = uiid;
        this.uiascription = uiascription;
        this.uicreatedate = uicreatedate;
        this.uiemail = uiemail;
        this.uiline = uiline;
        this.uimobile = uimobile;
        this.uiname = uiname;
        this.uinamepy = uinamepy;
        this.uiofficephone = uiofficephone;
        this.uipassword = uipassword;
        this.uiqq = uiqq;
        this.uiremarks = uiremarks;
        this.uistate = uistate;
        this.uivpmn = uivpmn;
        this.uidept = uidept;
    }

    /**
     * Gets uiid.
     *
     * @return Value for uiid.
     */
    public String getUiid() {
        return uiid;
    }

    /**
     * Sets uiid.
     *
     * @param uiid New value for uiid.
     */
    public void setUiid(String uiid) {
        this.uiid = uiid;
    }

    /**
     * Gets uiascription.
     *
     * @return Value for uiascription.
     */
    public String getUiascription() {
        return uiascription;
    }

    /**
     * Sets uiascription.
     *
     * @param uiascription New value for uiascription.
     */
    public void setUiascription(String uiascription) {
        this.uiascription = uiascription;
    }

    /**
     * Gets uicreatedate.
     *
     * @return Value for uicreatedate.
     */
    public java.sql.Timestamp getUicreatedate() {
        return uicreatedate;
    }

    /**
     * Sets uicreatedate.
     *
     * @param uicreatedate New value for uicreatedate.
     */
    public void setUicreatedate(java.sql.Timestamp uicreatedate) {
        this.uicreatedate = uicreatedate;
    }

    /**
     * Gets uiemail.
     *
     * @return Value for uiemail.
     */
    public String getUiemail() {
        return uiemail;
    }

    /**
     * Sets uiemail.
     *
     * @param uiemail New value for uiemail.
     */
    public void setUiemail(String uiemail) {
        this.uiemail = uiemail;
    }

    /**
     * Gets uiline.
     *
     * @return Value for uiline.
     */
    public String getUiline() {
        return uiline;
    }

    /**
     * Sets uiline.
     *
     * @param uiline New value for uiline.
     */
    public void setUiline(String uiline) {
        this.uiline = uiline;
    }

    /**
     * Gets uimobile.
     *
     * @return Value for uimobile.
     */
    public String getUimobile() {
        return uimobile;
    }

    /**
     * Sets uimobile.
     *
     * @param uimobile New value for uimobile.
     */
    public void setUimobile(String uimobile) {
        this.uimobile = uimobile;
    }

    /**
     * Gets uiname.
     *
     * @return Value for uiname.
     */
    public String getUiname() {
        return uiname;
    }

    /**
     * Sets uiname.
     *
     * @param uiname New value for uiname.
     */
    public void setUiname(String uiname) {
        this.uiname = uiname;
    }

    /**
     * Gets uinamepy.
     *
     * @return Value for uinamepy.
     */
    public String getUinamepy() {
        return uinamepy;
    }

    /**
     * Sets uinamepy.
     *
     * @param uinamepy New value for uinamepy.
     */
    public void setUinamepy(String uinamepy) {
        this.uinamepy = uinamepy;
    }

    /**
     * Gets uiofficephone.
     *
     * @return Value for uiofficephone.
     */
    public String getUiofficephone() {
        return uiofficephone;
    }

    /**
     * Sets uiofficephone.
     *
     * @param uiofficephone New value for uiofficephone.
     */
    public void setUiofficephone(String uiofficephone) {
        this.uiofficephone = uiofficephone;
    }

    /**
     * Gets uipassword.
     *
     * @return Value for uipassword.
     */
    public String getUipassword() {
        return uipassword;
    }

    /**
     * Sets uipassword.
     *
     * @param uipassword New value for uipassword.
     */
    public void setUipassword(String uipassword) {
        this.uipassword = uipassword;
    }

    /**
     * Gets uiqq.
     *
     * @return Value for uiqq.
     */
    public String getUiqq() {
        return uiqq;
    }

    /**
     * Sets uiqq.
     *
     * @param uiqq New value for uiqq.
     */
    public void setUiqq(String uiqq) {
        this.uiqq = uiqq;
    }

    /**
     * Gets uiremarks.
     *
     * @return Value for uiremarks.
     */
    public String getUiremarks() {
        return uiremarks;
    }

    /**
     * Sets uiremarks.
     *
     * @param uiremarks New value for uiremarks.
     */
    public void setUiremarks(String uiremarks) {
        this.uiremarks = uiremarks;
    }

    /**
     * Gets uistate.
     *
     * @return Value for uistate.
     */
    public String getUistate() {
        return uistate;
    }

    /**
     * Sets uistate.
     *
     * @param uistate New value for uistate.
     */
    public void setUistate(String uistate) {
        this.uistate = uistate;
    }

    /**
     * Gets uivpmn.
     *
     * @return Value for uivpmn.
     */
    public String getUivpmn() {
        return uivpmn;
    }

    /**
     * Sets uivpmn.
     *
     * @param uivpmn New value for uivpmn.
     */
    public void setUivpmn(String uivpmn) {
        this.uivpmn = uivpmn;
    }

    /**
     * Gets uidept.
     *
     * @return Value for uidept.
     */
    public String getUidept() {
        return uidept;
    }

    /**
     * Sets uidept.
     *
     * @param uidept New value for uidept.
     */
    public void setUidept(String uidept) {
        this.uidept = uidept;
    }

   ...
}
       
Vasiliy Sisko Vasiliy Sisko
Reply | Threaded
Open this post in threaded view
|

Re: Need help,error to Automatic Persistence Use Xml

Hello wufangyi.

Can you please properly subscribe to the mailing list so that the community
receives email notifications? Follow the instruction here:
http://apache-ignite-users.list/MailingListOptions.jtp?

To resolve that issue please add “cacheName” property to your jdbc type descriptions how on next example.

<bean class="org.apache.ignite.cache.store.jdbc.JdbcType">
    <property name="cacheName" value="REPORTTABLESWXC"/>
    <property name="databaseSchema" value="REPORTTABLESWXC"/>
    <property name="databaseTable" value="USERINFO"/>
    …

Ignite schema import utility is not generate that field now and will fixed in future.