首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取Javassist类型,而不是实际的Hibernate实体类型

获取Javassist类型,而不是实际的Hibernate实体类型
EN

Stack Overflow用户
提问于 2011-12-07 16:31:58
回答 3查看 10.8K关注 0票数 6

我偶然发现了一个非常恼人的情况:我使用Hibernate和Spring作为我的应用程序的后端,似乎在某些情况下,与特定实体建立关系的实体并不是作为普通实体对象从DB中获取的,而是作为Javassist类型获取的。例如:

我的Campaign实体具有以下关系:

代码语言:javascript
运行
复制
@Entity
@Table(name = "campaign")
public class Campaign implements Serializable {
  [..]
  @ManyToMany(fetch = FetchType.LAZY)
  @JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
        "campaign_id", "dealer_id" }), name = "campaign_has_dealer", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "dealer_id", nullable = false) })
  private List<Dealer> dealers = new ArrayList<Dealer>();

@ManyToMany
// (fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
        "campaign_id", "sales_area_id" }), name = "campaign_has_sales_area", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "sales_area_id", nullable = false) })
private List<SalesArea> salesAreas = new ArrayList<SalesArea>();
}

在检索到与此活动相关的salesAreas时,我会得到一个SalesArea_$$_javassist_56列表,而对于经销商,我会得到一个普通的Hibernate实体。因为客户端部分是基于GWT的,所以我们使用RequestFactory来检索内容。我最初认为这是代理、定位器等方面的问题,但我在服务中设置了一个断点,在选择这些断点后,它们直接是Javassist对象。似乎即使删除了FetchType.LAZY注释(尽管绝对不是理想的解决方案),也会发生同样的事情。这也发生在其他类型的关系中,不仅仅是@ManyToMany。

我们使用GWT2.3、Spring3、Hibernate 3.6.3和JPA 2.0进行注释。

如有任何建议,我们将不胜感激。

提前感谢

EN

Stack Overflow用户

发布于 2014-02-18 21:18:46

如果调用静态方法: HibernateProxyHelper.getClassWithoutInitializingProxy(entity);,您将获得被代理的实体的类以及类本身(如果没有被代理)。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8412334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档