Playframework — запрос и отображение результатов объединения нескольких таблиц

Я новичок в java и игровой среде (я использую play 1.2.2 с локальной базой данных MySQL5). Я пытаюсь запросить пару таблиц в базе данных и отобразить результаты объединения таблиц на веб-странице.

Это то, что у меня есть в разных битах:

Контроллер :-

public static void index() {
        List<Mutation> mutation_list= Mutation.getDisorderGene();
        render(mutation_list);       
    }

Модель :-

public class Mutation extends Model {

  public static List<Mutation> getDisorderGene() {
    EntityManager entityManager = play.db.jpa.JPA.em();
    List<Mutation> muts = entityManager.createNativeQuery("select disorder_name, gene_name from Disorder,Mutation where Disorder.id = Mutation.disorder_id order by disorder_name, gene_name").getResultList();
    return muts;
  }

Просмотреть :-

#{list items:mutation_list, as:'mutation'}
                    <tr>
                        <td>${mutation.disorder_name}</td>
                        <td>${mutation.gene_name}</td>
                    </tr>
 #{/list}            

И это сообщение об ошибке, которое я получаю!

Ошибка выполнения шаблона

Ошибка выполнения в шаблоне /app/views/Stu/index.html. Вызвано исключение: MissingPropertyException: исключение, оценивающее свойство «имя_беспорядка» для java.util.Arrays$ArrayList, причина: groovy.lang.MissingPropertyException: нет такого свойства: имя_беспорядка для класса: java.lang.String.

Я не уверен, в чем проблема. Это связано с запросом на соединение с таблицей JPA или что-то не так в представлении.

Есть ли какие-либо изменения в представлении, которые я могу внести для отображения столбцов?

Большое спасибо.


person Curly    schedule 20.09.2011    source источник


Ответы (2)


Собственный запрос, который выбирает несколько столбцов по умолчанию, возвращает их как Object[], поэтому ваш getDisorderGene() должен возвращать List<Object[]>, а ваш шаблон должен выглядеть следующим образом:

#{list items:mutation_list, as:'mutation'}
                    <tr>
                        <td>${mutation[0]}</td>
                        <td>${mutation[1]}</td>
                    </tr>
 #{/list}  
person axtavt    schedule 20.09.2011

Что, если вы поместите as clausule...

select disorder_name as NameMyPropertyModelClass, gene_name as NameMyPropertyModelClass 
from  Disorder,Mutation 
where Disorder.id = Mutation.disorder_id order by disorder_name, gene_name
person Gonzalo Oviedo    schedule 06.12.2011