Можно ли использовать такие методы при запросах к базе данных jpa? - PullRequest
1 голос
/ 24 февраля 2012

Я работаю над проектом jpa, где я сохраняю несколько экземпляров объекта Band, который содержит объекты ArrayList of Date.

Я хочу запросить базу данных для получения Bands, ArrayLists содержит указанную дату.

Возможно ли это? Я знаю, что весь мой дизайн может быть плохим, но я надеюсь, что это возможно, поскольку я знаю, что вам нужен метод get для использования параметров объекта, поэтому метод должен быть вызван где-то.

Я хочу использовать что-то вроде этого:

    Date d = new Date();
    List bands = em.createQuery("select b from Band b where b.dates.contains(d)").getResultList();
    //I am aware I may need to set up d as an argument. 

Это запрашиваемая сущность Band. Предположим, что пакет и импорт верны.

@Entity
@Table(name = "BAND")
public class Band extends SuperUser {
    @Column(name = "PHONENUMBER")
    private String phoneNumber;
    @Column(name = "BIOGRAPHY")
    private String biography;
    @Column(name = "DATES")
    private ArrayList<Date> dates = new<Date> ArrayList();

    public Band() {
    }

    public Band(String n, String e, String p, String ph_no, String bio) {
        super(n, e, p);
        this.phoneNumber = ph_no;
        this.biography = bio;
    }

    public void setPhoneNumber(String p) {
        this.phoneNumber = p;
    }

    public String getPhoneNumber() {
        return this.phoneNumber;
    }

    public void setBoigraphy(String b) {
        this.biography = b;
    }

    public String getBiography() {
        return this.biography;
    }

    public void setDate(Date d) {
        dates.add(d);
    }

    public void cancelDate(Date d) {
        while (dates.remove(d)) {
        }
    }

    public ArrayList getDates() {
        return dates;
    }

}

РЕДАКТИРОВАТЬ: Я получил это работает. Я не знал об элементах коллекций и временных типах, меняя список дат на:

@ElementCollection 
@Temporal(TemporalType.DATE)
private List<Date> dates = new <Date>ArrayList();

исправил это.

1 Ответ

2 голосов
/ 24 февраля 2012

Я думаю, что вы ищете "Член": http://www.objectdb.com/java/jpa/query/jpql/collection#NOT_MEMBER_OF_

select b from Band b where :d member of b.dates
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...