seam-gen不为@ManyToMany成员生成EntityQuery接口

时间:2010-01-15 16:39:25

标签: seam

用户界面中公开的@ org.jboss.seam.annotations.security.management.UserRoles返回一个简单的List方法。

seam-gen不为@ManyToMany成员生成EntityQuery接口,如上面提到的getUserRoles。

我们如何启用此功能,以便以分页方式显示结果角色。

编辑1:

This is the declaration in User.java

@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.LAZY)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id), inverseJoinColumns = @JoinColumn(name = "role_id"))
@UserRoles
private List<Role> userRoles = new ArrayList<Role>(0);

这是Role.java中的声明

@Entity
@Table(name = "role", uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class Role {

1 个答案:

答案 0 :(得分:4)

正如Peam Muir所说,Seam首席开发人员

  

Seam-gen不支持@ManyToMany关系

使用@ManyToMany时不会生成用户界面。虽然Seam-gen让你的生活更轻松,但有时你必须手动完成工作。

继续之前

  1. Seam-gen使用Hibernate的逆向工程工具
  2. 如果表中缺少外键 ,Seam-gen不能假设一个表与另一个表相关
  3. ...

    所以我的建议是:

    1. 将@ManyToMany关系拆分为@OneToMany - @ManyToOne关系
    2. 设置逆向工程配置
    3. Seam-gen使用的逆向工程配置文件是生成项目中的resources / seam-gen.reveng.xml。

      也许你想看

      Controlling reverse engineering

      Reverse engineering support in database and drivers

      添加到原始回答

      Seam使用Ant生成您的应用。其build.xml文件位于&lt; SEAM_HOME&gt; /seam-gen/build.xml

      在那里,您将看到一个名为 generate-ui 的目标,如下所示

      <target name="generate-ui"
      

      它使用名为hbmtemplate的Ant工具。它是基于模板的引擎,其中可以由用户提供的模板或类控制。因此,如果您想要自定义行为,则应提供自己的Freemarker模板。在&lt; SEAM_HOME&gt; / seam-gen / view目录中,您可以看到很多模板文件(.flt扩展名)

      的问候,