Java 使用Gilead持久化继承类

Java 使用Gilead持久化继承类,java,hibernate,gwt,gilead,Java,Hibernate,Gwt,Gilead,我正在使用Gilead将我的实体持久化到我的GWT项目中,我遇到了一个问题。我想创建一个父类来保存一些在我的实体中通用的属性(id等)。在持久化时,我得到一个空指针异常 父类: public abstract class Entity extends LightEntity implements Serializable { protected Long id; public Entity(){} } 儿童班: public class Person extends Entit

我正在使用Gilead将我的实体持久化到我的GWT项目中,我遇到了一个问题。我想创建一个父类来保存一些在我的实体中通用的属性(id等)。在持久化时,我得到一个空指针异常

父类:

public abstract class Entity extends LightEntity implements Serializable {
    protected Long id;
    public Entity(){}
}
儿童班:

public class Person extends Entity  {
    private String firstName;
    private String lastName;
    public Person(){}
}
休眠映射文件:

<hibernate-mapping>
    <class name="com.domain.Entity" abstract="true" >
        <id name="id" type="long">
                <column name="ID"/>
                <generator class="native" />
            </id>
        <union-subclass name="com.domain.Person" table="PERSON">
            <property name="id" type="long" />
            <property name="firstName" type="string">
                <column name="FIRST_NAME" length="45" not-null="true" />
            </property>
            <property name="lastName" type="string">
                <column name="LAST_NAME" length="45" not-null="true" />
            </property>
        </union-subclass>
    </class>
</hibernate-mapping>

持久化时的堆栈跟踪:

java.lang.NullPointerException 位于net.sf.gilead.gwt.PersistentRemoteService.processCall(PersistentRemoteService.java:170) 位于com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 位于org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315) 位于org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) 位于com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) 位于com.sun.enterprise.web.peSessionLockingsStandardPipeline.invoke(peSessionLockingsStandardPipeline.java:98) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) 位于org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) 位于org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) 位于org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) 位于org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096) 位于org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288) 位于com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.InvokeApter(DefaultProcessorTask.java:647) 位于com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579) 位于com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831) 位于com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) 位于com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263) 位于com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214) 位于com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380) 位于com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) 位于com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)


不确定这是否有用。只是猜测而已。你尝试过非抽象超类吗?有时,在序列化之前(当然在当前事务范围之外)手动清空/急切地加载惰性对象引用或列表只会起作用,并且不需要Gilead。

不确定是否有帮助。只是猜测而已。你尝试过非抽象超类吗?有时,在序列化之前(当然在当前事务范围之外)手动取消/急切地加载惰性对象引用或列表只起作用,并且不需要Gilead。

您使用Gilead您使用Gilead
return RPCCopy.getInstance().encodeResponseForFailure(null, ex, rpcRequest.getSerializationPolicy());
// Decode request
rpcRequest = RPCCopy.getInstance().decodeRequest(payload, this.getClass(), this);
if (rpcRequest != null)
{
  return RPCCopy.getInstance().encodeResponseForFailure(null, ex, rpcRequest.getSerializationPolicy());
}
else
{
    return RPCCopy.getInstance().encodeResponseForFailure(null, ex);
}