ejb3 toplink jpa 1.0 запросы и секвенирование - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть 2 вопроса: предположим, у нас есть одна сущность с именем class, а другая - с именем student.В каждом классе учится много учеников.

public class Clas implements Serializable {
  @Id
      @GeneratedValue(strategy=GenerationType.SEQUENCE)
private int id;
@OneToMany(cascade=CascadeType.ALL)
Collection<Student> students;
  public clas(){
    super();
    }
 ..... getters and setters
}

q1: Я получаю исключение: нет полей для отображения, при добавлении любого другого столбца, например, String name, это работает, но мне это поле не нужно, чтоя могу сделать?

q2: Идентификаторы генерируются автоматически, и я хочу запросить всех учащихся в классе c1, но у меня нет идентификатора этого класса, как это сделатьвопрос?

я работаю с сервером MySQL Glassfish v2.1 toplink jpa 1.0

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 декабря 2011

ки. Я думаю, что понял ваш вопрос. Вы можете использовать NamedQueries, написанные на языках запросов в зависимости от вашей библиотеки (в вашем случае toplink), например EJB QL или HBQL. Вы можете создавать Session Beans для запросов.

public class ClassSessionBean {
    @PersistenceContext(unitName="your PU name in persistence . xml")
    private Entitymanager em;

    publicClas selectByID(int id) throws NoResultException {
        Query q = em.createQuery("select class from Class class where class.id=?");
        q.setParameter(1, id);
        Clas clas = q.getResultList();
        return clas;
    }
} 

Обратите внимание, что приведенный выше код может содержать синтаксические ошибки, потому что я его нигде не проверял.

Надеюсь, вы найдете помощь от этого :).

0 голосов
/ 26 декабря 2011

Студенческий класс должен иметь свойство с именем 'classID' (или любым другим), которое ссылается на

Свойство идентификатора Clas. Это должно быть аннотировано как @ ManyToOne.

Если это уже сделано в IDE, проверьте стратегию генерации идентификатора. Например, если вы используете mysql, первичным ключом является auto_increment, а затем установите стратегию th id на

GenerationType.AUTO и перекомпилируйте. Скажите, есть ли другие ошибки? :).

...