gpt4 book ai didi

seam-gen 不会为@ManyToMany 成员生成 EntityQuery 接口(interface)

转载 作者:行者123 更新时间:2023-12-04 23:09:50 25 4
gpt4 key购买 nike

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

seam-gen 不会像上面提到的 getUserRoles 那样为 @ManyToMany 成员生成 EntityQuery 接口(interface)。

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

编辑 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 does not support @ManyToMany relationship

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

继续之前

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

...

所以我的建议是:

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

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目录下,可以看到很多Template文件(.flt扩展名)

问候,

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com