问题标签 [gilead]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1170 浏览

java - 使用 Gilead 持久化具有继承的类

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

父类:

儿童班:

休眠映射文件:

持久化时的堆栈跟踪:

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) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) at com.sun .enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java :648) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) 在 org.apache.catalina.core 的 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)。 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) 在 org.apache.catalina.core.StandardPipeline 的 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) .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.invokeAdapter(DefaultProcessorTask.java:647) 在 com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579) 在 com.sun.enterprise。 com.sun.enterprise.web.connector.grizzly 上的 web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)。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)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)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)

0 投票
2 回答
2168 浏览

hibernate - Hibernate、GWT 和 Gilead:会话、事务和缓存

我正在编写一个 GWT 应用程序,在服务器端使用 Hibernate。现在,我完全不知道用最少的代码将我的对象传输到 GWT 应用程序客户端的正确方法。我正在使用 Gilead 以避免将我的域模型中的类数量增加一倍 [1]。

首先,我的问题是我应该如何打开会话和交易。最初,我在每个 RPC 服务器调用上都这样做:

由于这会为每个 RPC 调用打开和关闭一个 Session,这是否也会每次都创建一个到数据库服务器的新连接?

无论如何,一旦我开始使用延迟加载的集合,我就会使用这种模式得到以下异常:

在我看来,在 Gilead 有机会序列化集合对象之前会话已关闭,这会导致异常。

所以我试图通过自己显式打开 Session 来解决这个问题,这样可以防止它在每次交易后自动关闭,如下所示:

但是,当我这样做时,我看到了与 Session 对象缓存相关的各种时髦行为。一方面, createQuery().executeUpdate() 似乎并没有使会话缓存无效,尽管我已经在各个站点上阅读过它应该这样做。当我试图通过调用 session.flush()、session.clear() 等的各种排列来使会话缓存无效来解决这个问题时,下一个错误是在 Gilead 或 Beanlib 深处的序列化上出现“ClassCastException:null” .

另一方面,当我尝试这样的事情时:

我收到一个错误,例如“具有相同标识符的不同对象已经在会话缓存中”。

设置这种事情的正确方法是什么?我应该如何确定我的会话范围以及我应该如何处理缓存?我无法想象我是唯一一个尝试这个并遇到问题的人,但似乎很难找到好的指南。

[1] http://code.google.com/webtoolkit/articles/using_gwt_with_hibernate.html

0 投票
2 回答
248 浏览

security - 安全问题:如何保护从客户端返回到服务器的 Hibernate 集合?

我有一个名为“Parent”的简单 pojo,其中包含对象“Child”的集合。

在hibernate/jpa中,它只是一个一对多的关联,孩子不知道他们的父母:这些孩子对象可以有不同类型的父母,所以更容易不知道父母(想想代表标签的孩子,父母可以是具有标签的不同对象类型)。

现在,我将我的 Parent 对象发送到我网站的客户端视图以允许用户对其进行修改。

为此,我使用 Hibernate/GWT/Gilead。

我的用户进行了一些更改,然后单击将我的 Parent 对象发送到服务器的保存按钮 (ajax)。我父母的字段已被修改,但更重要的是,集合中已添加或删除了一些子对象。

总而言之,当父对象返回服务器时,它现在在其集合中具有: - id 为空且需要持久化的新“子”对象 - id 不为空且需要合并的已修改“子”对象 -可能被黑客入侵的“子”对象,其中 id 不为空但不属于父级 - 缺少(删除)子对象:需要删除

你如何保存父对象(及其集合)?您是否从数据库加载父集合以比较修改后集合的每个对象以查看是否没有被黑客入侵的项目?您是否清除旧集合(以删除孤儿)并重新添加新孩子(但有一些尚未修改的孩子)?

谢谢

PS:对不起我的英语,我希望你理解这个概念;)

0 投票
3 回答
7597 浏览

java - 使用 Hibernate + Javassist + Gilead 时出现“重复方法”错误

我的网络应用程序使用 GWT 2.0.2、GXT 2.1.1、Hibernate 3.5-CR1、Javassist 3.11.0 和 Gilead 1.3.1(来自 SVN 的最新版本)。

我的应用在 GWT 1.7.1 + Gilead 1.2 上运行得很好。

我想利用 GWT 2.0 的一些特性,并想在此过程中升级到最新的 Gilead。我指出了 Gilead 1.3 中的新 gwt.xml 文件。我也在使用新的 net.sf.gilead.pojo.gwt.LightEntity 而不是 net.sf.gilead.pojo.java5.LightEntity。

我有一些扩展LightEntity的 Hibernate 实体/类(即 Question、Form),以及一些扩展 Question 实体的实体/类。不确定它是否重要,但我使用 InheritanceType.JOINED 作为 Question 实体中的继承策略。

作为参考,这里是 Question 类:

我的应用程序有一个创建 Hibernate 会话工厂的启动 servlet。在日志中,我在所有直接或间接扩展 LightEntity 的类上都收到“重复方法”错误。我想知道这是否是 Javassist 处理继承的问题。

关于如何解决这个问题的任何想法?

0 投票
4 回答
19090 浏览

java - 使用带有 gilead 的注释通过 gwt 进行休眠时,我收到 oneToMany 关联错误

我正在使用 Gilead 将我的实体保存在我的 GWT 项目中,我也使用休眠注释。我的问题出在我的 onetomany 关联上。这是我的 User 类,它包含对 FileLocations 列表的引用

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name="USER_ID") private List fileLocations = new ArrayList();

这是我的文件位置类

@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="USER_ID", nullable=false) private YFUser uploadUser;

当我将这些数据保存在普通桌面应用程序中时,它可以正常工作,创建表,我可以向其中添加和存储数据。但是当我尝试将数据保存在我的 gwt 应用程序中时,我会遇到错误,我会将它们显示得更低。这是我的扩展 PersistentRemoteService 的 ServiceImpl 类。

这是我得到的错误。当我删除我的 onetoManyRelationship 并在我放入会话工厂时构建我的会话工厂时,错误消失了,它在 hibernate Util 中的 buildsessionfactory 行上,它抛出了这个异常。我的休眠实用程序类也可以。这是错误 java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z

0 投票
1 回答
545 浏览

hibernate - (第二次)合并后实体中的@OneToMany 属性为空

我在 GWT 项目中使用 JPA(与 Hibernate)和 Gilead。在服务器端,我有这个方法,我用相同的“活动”调用了这个方法两次。在第二次调用时,它在第 4 行“campaign.getTextAds()”中引发空指针异常

WrapperCampaign Entity 中的代码如下所示

0 投票
2 回答
3978 浏览

java - 使用 hibernate 和 gilead for gwt 添加到实体类中保存的列表时出现 LazyInitializationException

对,所以我正在与 hibernate gilead 和 gwt 合作,将我的数据保存在网站的用户和文件上。我的用户有一个文件位置列表。我正在使用注释将我的类映射到数据库。org.hibernate.LazyInitializationException当我尝试将文件位置添加到用户类中保存的列表时,我得到了一个。

这是下面的一种方法,它被我正在使用的外部文件上传 servlet 类覆盖。当文件上传它调用这个方法。

user1 是从其他地方的数据库中加载的。异常发生在user1.getFileLocations().add(fileLocation);。我真的完全不明白。!任何帮助都会很棒。错误的堆栈跟踪如下

//这是您的文件用户的类文件

}

}

0 投票
2 回答
24281 浏览

java - 带有休眠注解的接口

我想知道如何注释界面

上面和下面是 2 个实现名为 Hierarchy 的接口的类,文件夹类有一个层次结构列表,即文件夹或文件信息类

我已经在网上搜索了某种注释或解决方法,但我无法映射界面,这就是这个

我在带有文件夹的层次结构列表上得到一个映射异常,但我不知道如何正确映射该类。

0 投票
1 回答
913 浏览

hibernate - Gilead 在 GWT 2.0 集成中的 Hibernate Lazy 初始化异常问题

我在我的项目中使用 GWT 2.0 作为 UI 层。在服务器端,我使用 Hibernate。例如,这是我拥有的 2 个域实体:

在我的 DAO 层上,我使用从 Spring扩展HibernateDAOSupport的UserDAO 。UserDAO 有getAll方法来返回所有用户。

在我的 DAO 服务上,我使用UserService,它使用 userDAO 来获取所有用户。

因此,当我从 UsersService 获取所有用户时,返回的用户实体与 Hibernate 会话分离。出于这个原因,我不想在从我的服务获得的用户实例上使用getRoles()方法。

我想要的只是通过 RPC 服务传输我的用户列表,以便能够通过 GWT 在客户端使用用户的其他信息。

因此,我的主要问题是能够将简单列表中 Users.roles 中的 PersistentBag 转换为能够通过 RPC 传输用户。为此,我已经看到 Gilead Framework 可能是一个解决方案。

为了使用 Gilead,我更改了我的域实体。现在,他们扩展了 net.sf.gilead.pojo.gwt.LightEntity并且他们尊重 JavaBean 规范。

在服务器上,由于 GwtRpcSpring 框架 ( http://code.google.com/p/gwtrpc-spring/ ),我通过 RPC 公开了我的服务。这个框架有一个建议,可以让 Gilead 更容易集成。

我的 applicationContext 包含 Gilead 的以下配置:

doBasicProfiling 方法的代码如下:

使用该配置,当我运行我的应用程序并使用获取所有用户的 RPC 服务时,我从 Users.roles 中获得了来自 Hibernate 的延迟初始化异常。

我很失望,因为我认为 Gilead 会让我序列化我的域实体,即使这些实体包含 PersistentBag。

这不是吉利德的目标之一?

那么,有人会知道如何配置 Gilead(使用 GwtRpcSpring 或其他解决方案)以能够在没有延迟异常的情况下传输域实体?

提前感谢您的帮助。

西尔万

0 投票
1 回答
2850 浏览

java - org.hibernate.NonUniqueObjectException 在 GWT 应用程序中通过 gilead 使用休眠

我正在为使用 GWT、Hibernate 和 Gilead 的大学做一个项目。基本上目前用户应该能够添加和删除朋友。此外,用户可以查看他或她的朋友是否在线。

我的麻烦是,当我添加一个已经与另一个朋友相关的朋友时,我收到了这个错误:

这是我的 gwt 应用程序的服务类:

我的麻烦在于我在此方法中的服务实现类,当用户按下add friend客户端上的按钮时会调用该方法。

一个场景:

user1user2添加为好友。这工作正常,然后user3添加user2并引发异常。

任何想法为什么以及我的逻辑出错的地方?

更新:好的,所以我已经更改了我的代码,并且我已经删除了所有getCurrentASession()调用并替换openSession()为在适当的时候关闭的调用,现在我得到的错误是: