在用户界面中公开的@ 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 {

最佳答案

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


Seam-gen不支持@ManyToMany关系


使用@ManyToMany时,它不会生成用户界面。尽管Seam-gen使您的生活更轻松,但有时还是需要手动完成工作。

在继续之前


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


...

所以我的建议是:


将您的@ManyToMany关系拆分为@OneToMany-@ManyToOne关系
设置逆向工程配置


Seam-gen使用的反向工程配置文件是生成的项目内的resources / seam-gen.reveng.xml。

也许你想看看

Controlling reverse engineering

Reverse engineering support in database and drivers

添加到原始答案

Seam使用Ant来生成您的应用程序。其build.xml文件位于 /seam-gen/build.xml中

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

<target name="generate-ui"


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

问候,

关于seam - seam-gen不会为@ManyToMany成员生成EntityQuery接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2073199/

10-10 22:35