【问题标题】:Spring ROO GWT Select by referenceSpring ROO GWT 通过引用选择
【发布时间】:2011-09-29 06:20:59
【问题描述】:

我创建了一个 GWT Spring ROO 项目,其中包含以下实体:Facture 和 ItemFacture。

ItemFacture 包含对 Facture 的引用。

@RooJavaBean
@RooToString
public class ItemFacture {

    @ManyToOne
    private Facture facture;
...

这是 Facture 的代码:

@RooJavaBean
@RooToString
@RooEntity
public class Facture {

    private String nom;
    private String type;
}

一切都很顺利,直到我想创建一个自定义查找器来选择包含特定 Facture 的所有 ItemFactures :

@SuppressWarnings("unchecked")
public static List<ItemFacture> findByFacture(Facture facture) {

    Query q = entityManager().createQuery("SELECT o FROM ItemFacture AS o WHERE o.facture = :facture");
    q.setParameter("facture", facture);

    return q.getResultList();
}

当我尝试执行这个查找器时,它给了我这个错误:

服务器错误:com.test.ItemFacture 中不存在字段“facture”或不持久;嵌套异常是 javax.persistence.PersistenceException:com.test.ItemFacture 中不存在字段“facture”或不持久

我创建了一些自定义查找器,除了这个之外,每个查找器都运行良好。

我尝试将@Persistent 添加到该字段并将@PersistenceCapable(identityType = IdentityType.APPLICATION) 添加到Facture,但它仍然不起作用。

有人知道是什么问题吗?

【问题讨论】:

  • 也想看看 Facture 类中的代码。
  • 我添加了 Facture 的代码。但我尝试了其他几个实体,但没有任何效果。

标签: gwt persistence spring-roo


【解决方案1】:

我猜这不起作用的原因是 ItemFacture 类不是@Entity,所以 JPA 不知道这个字段存在。使用 @RooEntity 对 ItemFacture 类进行注释 roo 生成一个 ItemFactures_Roo_Entity.aj (STS 默认将这些文件隐藏在包资源管理器中),它将您的 ItemFacture 类上的 @Entity 注释与其他一些东西连接在一起,使其成为 ActiveRecord (http:/ /martinfowler.com/eaaCatalog/activeRecord.html)

【讨论】:

  • 我在 ItemFacture 中添加了“@Entity”并删除了“declare @type: ItemFacture: @Entity;”来自 ItemFacture_Roo_Entity.aj 但不幸的是它仍然无法正常工作。
【解决方案2】:

在 AppEngine 中,使用被引用对象的 ID 进行引用。所以 如果ItemFacture包含和属性facture的事件,它实际上存储为factureId。

所以写的方法是这样的:

@SuppressWarnings("unchecked")
public static List<ItemFacture> findByFacture(Facture facture) {

    Query q = entityManager().createQuery("SELECT o FROM ItemFacture AS o WHERE o.factureId = :facture");
    q.setParameter("facture", facture.getId());

    return q.getResultList();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多