Я работаю над проектом 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();
исправил это.