2010-01-15 1 views
3

@ org.jboss.seam.annotations.security.management.UserRoles, открытый в интерфейсе пользователя, возвращает простой метод List.seam-gen не генерирует интерфейсы EntityQuery для членов @ManyToMany

seam-gen не создает интерфейсы EntityQuery для @ManyToMany членов, таких как упомянутые выше getUserRoles.

Как включить это, чтобы результирующие роли отображались с разбивкой по страницам.

Edit 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 Добавлено комментарий –

ответ

4

Как сказал Пит Muir, Seam ведущего разработчика

Шов поколения не поддерживает @ManyToMany отношение

Он не генерирует пользовательский интерфейс при использовании @ManyToMany. Хотя Seam-gen упрощает вашу жизнь, иногда вам приходится выполнять свою работу вручную.

Перед выходом на

  1. Seam-ген использует Hibernate в реверс-инжиниринг-инструмент
  2. Если внешнего ключа отсутствует в таблице, фальц-ген не может предположить, одна таблица связана с другой

...

Так что мой совет:

  1. Разделите @ManyToMany отношения в @OneToMany - @ManyToOne отношения
  2. Настройка обратного проектирования конфигурации

Файл конфигурации обратного проектирования, которая использует Шов поколения является ресурсы/шву gen.reveng .xml внутри сгенерированного проекта.

Может быть, вы хотите увидеть

Controlling reverse engineering

Reverse engineering support in database and drivers

Добавлен оригинальный ответ

Шов использует Ant для создания вашего приложения. Его файл build.xml расположен в <SEAM_HOME> /seam-gen/build.xml

Там вы увидите цель под названием генерировать-ще следующий

<target name="generate-ui" 

Он использует Ant Инструмент называется hbmtemplate.Это механизм, основанный на шаблонах, в котором может управляться с помощью шаблона или класса. Поэтому, если вы хотите создать собственное поведение, вы должны предоставить свой собственный шаблон Freemarker. В <SEAM_HOME>/шов поколения/каталог просмотра, вы можете увидеть много файлов шаблонов (.flt расширение)

С уважением,

+0

В настоящее время, у меня есть много рабочего кода, который использует отношения ManyToMany. Разделение отношений может быть правильным решением для этого решения, но есть ли способ, которым я мог бы получить существующий список @ManyToMany для рендеринга с разбивкой по страницам. Мне нужен механизм, чтобы каким-то образом связать этот список поверх структуры EntityQuery в Seam (Примечание: я бы не хотел повторно использовать существующий код, поскольку мы уже потратили некоторое время на то, чтобы это работало на основе отношений @ManyToMany) – Joe

+0

@Joshua Спасибо за ваш ответ. В субботу я увижу, как я могу помочь вам достичь своей цели. –

+0

@Arthur с нетерпением ждет вашего ответа (Как я упоминал ранее, у нас слишком много кода на основе существующих отношений @ManyToMany) – Joe