1
我正在jpa项目中工作,我坚持包含Date对象ArrayList的Band对象的多个实例。查询jpa数据库时是否可以使用类似这样的方法?
我想查询数据库以获取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.
这是因为请求的时间带实体。假设包和导入是正确的。
@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();
修复它。
啊哈有希望呢!我得到一个错误,没有要求答案,我很想知道它是什么意思:编译查询时出错[从b中选择b,其中:d成员b.dates],第1行,第42列:无效集合成员声明[日期],预期集合值关联字段。 – Aido 2012-02-24 17:25:57
发布乐队实体代码... – 2012-02-24 17:33:46
原创帖子编辑。 – Aido 2012-02-25 16:44:03