【发布时间】:2012-02-25 22:44:28
【问题描述】:
使用以下查询来查询我的 jpa 数据库(使用 netbeans、glassfish):
//assume java.sql.Date d
Query q = em.createQuery("select b from Band b where :date MEMBER OF b.dates");
q.setParameter("date", d);
List bands = q.getResultList();
但是,当我将 MEMBER OF 更改为 NOT MEMBER OF 时,我收到以下服务器错误:
java.sql.SQLDataException: An attempt was made to get a data value of type 'DATE' from a data value of type 'BIGINT'.
Error Code: 20000
Call: SELECT t0.ID, t0.DTYPE, t0.EMAIL, t0.NAME, t0.PASSWORD, t0.BIOGRAPHY, t0.PHONENUMBER FROM SUPERUSER t0 WHERE (NOT EXISTS (SELECT DISTINCT t2.ID FROM SUPERUSER t2, Band_DATES t1 WHERE ((((t1.Band_ID = t0.ID) AND (? = t2.ID)) AND (t2.DTYPE = ?)) AND (t2.DTYPE = ?))) AND (t0.DTYPE = ?))
bind => [4 parameters bound]
任何帮助将不胜感激。我到处都在使用 sql.Date。
编辑:包括我的乐队实体
@Entity
@Table(name = "BAND")
public class Band extends SuperUser{
@Column(name="PHONENUMBER")
private String phoneNumber;
@Column(name="BIOGRAPHY")
private String biography;
@Column(name="DATES", columnDefinition = "DATE DEFAULT CURRENT_DATE")
@ElementCollection
private List<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 List getDates()
{
return dates;
}
}
如何获得表格描述?
【问题讨论】:
-
请发布您的实体和表格描述。
-
实体已发布,我不知道如何在 netbeans 中获取表描述。
-
您希望如何从单个列中获得
List<Date>?我假设日期存储在另一个数据库表中,在这种情况下你需要@CollectionTable -
您能详细说明一下吗?我想我可以将包含日期的列表保存在一列中。
-
"ElementCollection 值始终存储在单独的表中。"来自:the wikibooks article
标签: java database jpa netbeans