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