GWT请求工厂

GWT请求工厂,gwt,proxy,fetch,setter,requestfactory,Gwt,Proxy,Fetch,Setter,Requestfactory,使用GWT 2.5.1,我得到以下错误: com.google.web.bindery.requestfactory.server.UnexpectedException: Could not locate setter for property cptdossier in type org.nit.persistance.entites.Tllog 我觉得我误解了如何使用主键,但我不知道如何修复它 此时,我正在点击一张桌子,它应该会打开一个充满细节的窗口。 当它尝试在以下步骤中获取reque

使用GWT 2.5.1,我得到以下错误:

com.google.web.bindery.requestfactory.server.UnexpectedException: Could not locate
setter for property cptdossier in type org.nit.persistance.entites.Tllog
我觉得我误解了如何使用主键,但我不知道如何修复它

此时,我正在点击一张桌子,它应该会打开一个充满细节的窗口。 当它尝试在以下步骤中获取request.to时,这种情况会发生

private void fetchAndEdit() {
    Request<TllogProxy> fetchRequest = requestFactory.createTllogRequest().find(tllog.getId(), tllog.getDatecre());
    fetchRequest.with(editorDriver.getPaths());
    fetchRequest.to(new Receiver<TllogProxy>() {
      @Override
      public void onSuccess(TllogProxy tllog) {
        TllogEditorWorkflow.this.tllog = tllog;
        TllogRequest context = requestFactory.createTllogRequest();
        edit(context);
        context.persist(tllog);
      }
    }).fire();
  }
TllogPK扩展了BaseTllogPK,它的代码是

public abstract class BaseTllogPK implements Serializable {
    private static final long serialVersionUID = 1L;
    protected int hashCode = Integer.MIN_VALUE;

    private java.lang.String metier;
    private java.lang.String sitegeo;
    private java.lang.String cptdossier;
    private java.lang.Integer numligne;

    public BaseTllogPK () {}

    public BaseTllogPK (
            java.lang.String metier,
            java.lang.String sitegeo,
            java.lang.String cptdossier,
            java.lang.Integer numligne
            ) {
        this.setMetier(metier);
        this.setSitegeo(sitegeo);
        this.setCptdossier(cptdossier);
        this.setNumligne(numligne);
    }

    + getters and setters
Tllog代理

@ProxyFor(value = Tllog.class, locator = TllogLocator.class)
public interface TllogProxy extends ValueProxy
{
    Integer getEtafin();
    void setEtafin(Integer etafin);
    TllogPKProxy getId();
    void setId(TllogPKProxy id);

    Date getDatecre();
        void setDatecre(Date datecre);
        String getUtilcre();
        void setUtilcre(java.lang.String utilcre);
        Date getDatemod();
        void setDatemod(java.util.Date datemod);
        String getUtilmod();
        void setUtilmod(java.lang.String utilmod);
        Long getMessage();
        void setMessage(java.lang.Long message);
        String getFmb();
        void setFmb(java.lang.String fmb);
        String getMsgtxt();
        void setMsgtxt(java.lang.String msgtxt);
        String getDbmserrtext();
        void setDbmserrtext(java.lang.String dbmserrtext);
}
TllogPK的代理

@ProxyFor(value = TllogPK.class, locator = TllogLocator.class)
public interface TllogPKProxy extends ValueProxy
{
    String getCptdossier ();
    void setCptdossier (java.lang.String cptdossier);
    String getMetier ();
    void setMetier (java.lang.String metier);
    Integer getNumligne ();
    void setNumligne (java.lang.Integer numligne);
    String getSitegeo ();
    void setSitegeo (java.lang.String sitegeo);
}
差点忘了映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.nit.persistance.entites">
    <class name="Tllog" table="TL_LOG" rowid="rowid"> 
        <meta attribute="sync-DAO">false</meta> 
        <composite-id name="id" class="TllogPK"> 
            <key-property name="metier"     column="TL_METIER"     type="string"/> 
            <key-property name="sitegeo"    column="TL_SITEGEO"    type="string"/> 
            <key-property name="cptdossier" column="TL_CPTDOSSIER" type="string"/> 
            <key-property name="numligne"   column="TL_NUMLIGNE"   type="integer"/> 
        </composite-id> 
        <property name="etafin"      column="TL_ETAFIN"       type="integer"/> 
        <property name="datecre"     column="TL_DATECRE"      type="timestamp"/> 
        <property name="utilcre"     column="TL_UTILCRE"      type="string" length="20" update="false"/> 
        <property name="datemod"     column="TL_DATEMOD"      type="timestamp"/>
        <property name="utilmod"     column="TL_UTILMOD"      type="string" length="20" insert="false"/>
        <property name="xmlbase"     column="XML_BASE"   type="org.nit.data.HibernateXMLType"/> 
        <property name="xmlcanvas"   column="XML_CANVAS"    type="org.nit.data.HibernateXMLType"/> 
        <property name="message"     column="TL_MESSAGE"       type="long"/> 
        <property name="fmb"         column="TL_FMB" type="string"/> 
        <property name="msgtxt"      column="MSGTXT" type="string"/>
        <property name="dbmserrtext" column="DBMSERRTEXT" type="string"/>
    </class>
</hibernate-mapping>

错误的
TllogLocator

import java.util.Date;
import com.google.web.bindery.requestfactory.shared.Locator;
import org.nit.persistance.entites.Tllog;
import org.nit.persistance.entites.TllogPK;

public class TllogLocator extends Locator<Tllog, TllogPK>
{
    @Override
    public Tllog create (Class<? extends Tllog> clazz)
    {
        return new Tllog();
    }

    @Override
    public Tllog find (Class<? extends Tllog> clazz, TllogPK id)
    {
        return CEMTllog.fetch(id, null);
    }

    @Override
    public Class<Tllog> getDomainType ()
    {
        return Tllog.class;
    }

    @Override
    public TllogPK getId (Tllog tllog)
    {
        return tllog.getId();
    }

    @Override
    public Class<TllogPK> getIdType ()
    {
        return TllogPK.class;
    }

    @Override
    public Object getVersion (Tllog tllog)
    {
        return new Date(); 
    }

}
import java.util.Date;
导入com.google.web.bindery.requestfactory.shared.Locator;
导入org.nit.persistence.entites.Tllog;
导入org.nit.persistence.entites.TllogPK;
公共类TllogLocator扩展了定位器
{
@凌驾

公共Tllog create(ClassLooks OK。此错误消息通常非常可靠,除了…是否有任何其他类(带有代理)扩展包含“cptdossier”的基类?如果您不提供,GWT会给出这条毫无帮助的消息。例如,ProxyX和ProxyY扩展了ProxyB。ProxyB声明了一些未在PojoY中实现的方法。遗憾的是,在这种情况下,错误消息没有提到PojoY。感谢您如此快速地回复salk31。经过调查,TllogPK是唯一扩展BaseTLogPK only定位器cl的实体ass是一样的。不知道这是否相关,但我只是在线程中添加了定位代码。Tks公共类TllogLocator扩展了定位程序如果有东西扩展了TllogPKProxy,那么它就更重要了…为了避免坏的请求工厂让代理和pojo类层次结构有所不同。它在抱怨Tllog,尽管这很可能是TllogProxy类层次结构。如果我添加了混淆,请原谅。不要这样做,因为您为我指明了正确的方向。我确实将TllogPK更改为@ProxyFor(value=TllogPK.class,locator=TllogPKLocator.class)。显然,我创建了一个TllogPKLocator,信不信由你,它正在工作。
import java.util.Date;
import com.google.web.bindery.requestfactory.shared.Locator;
import org.nit.persistance.entites.Tllog;
import org.nit.persistance.entites.TllogPK;

public class TllogLocator extends Locator<Tllog, TllogPK>
{
    @Override
    public Tllog create (Class<? extends Tllog> clazz)
    {
        return new Tllog();
    }

    @Override
    public Tllog find (Class<? extends Tllog> clazz, TllogPK id)
    {
        return CEMTllog.fetch(id, null);
    }

    @Override
    public Class<Tllog> getDomainType ()
    {
        return Tllog.class;
    }

    @Override
    public TllogPK getId (Tllog tllog)
    {
        return tllog.getId();
    }

    @Override
    public Class<TllogPK> getIdType ()
    {
        return TllogPK.class;
    }

    @Override
    public Object getVersion (Tllog tllog)
    {
        return new Date(); 
    }

}