2010-01-15 42 views
3

@ org.jboss.seam.annotations.security.management.UserRoles在用戶界面中公開會返回一個簡單的List方法。seam-gen不會爲@ManyToMany成員生成EntityQuery接口

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

@Joshua添加的註釋 – 2010-02-01 05:24:50

回答

4

宣佈爲皮特繆爾,Seam的主要開發人員

縫根不支持說@ManyToMany relationship

使用@ManyToMany時,它不會生成用戶界面。雖然Seam-gen讓你的生活更輕鬆,但有時候,你必須手動完成工作。

之前

  1. 縫根打算使用Hibernate的逆向工程工具
  2. 如果外鍵表中缺少,縫根不能假設一個表是另一

...

所以我的建議是:

  1. 分裂您@ManyToMany關係到@OneToMany - @ManyToOne關係
  2. 設置反向工程配置

該煤層根採用的是資源/縫gen.reveng逆向工程的配置文件生成的項目中的.xml。

也許你想看到

Controlling reverse engineering

Reverse engineering support in database and drivers

添加到原來的答案

Seam使用Ant來生成您的應用程序。它的build.xml文件位於<SEAM_HOME> /seam-gen/build.xml

在那裏,你會看到一個名爲目標產生的UI如下

<target name="generate-ui" 

它採用了螞蟻名爲hbmtemplate的工具。它是一個基於模板的引擎,其中可以由用戶提供的模板或類控制。所以如果你想要一個自定義行爲,你應該提供你自己的Freemarker模板。在<SEAM_HOME> /縫根/ view目錄,你可以看到很多的模板文件(擴展名.FLT)

問候,

+0

目前,我有很多工作代碼這是使用ManyToMany關係。拆分關係可能是此解決方案的正確解決方法,但是有什麼方法可以使現有的@ManyToMany列表以分頁方式呈現。我需要一種機制來在Seam的EntityQuery框架之上綁定這個列表(注意:我們不想重新執行現有的代碼,因爲我們已經花了一些時間來基於@ManyToMany關係進行工作) – Joe 2010-01-28 05:50:56

+0

@Joshua謝謝你的回覆。星期六我會看到我如何幫助你實現目標。 – 2010-01-28 13:27:00

+0

@Arthur期待您的回覆(正如我前面提到的,我們有太多基於現有的@ManyToMany關係的代碼) – Joe 2010-01-29 09:26:52

相關問題