Java JPA-不是查询的成员查找bigint而不是date?

Java JPA-不是查询的成员查找bigint而不是date?,java,database,jpa,netbeans,Java,Database,Jpa,Netbeans,使用以下查询查询我的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(); 但是,当我将的成员更改为非的成员时,会出现以下服务器错误: java.sql.SQLDat

使用以下查询查询我的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();
但是,当我将的成员更改为非的成员时,会出现以下服务器错误:

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,到处都是日期

编辑:包括我的标注栏图元

@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;
}

}
@实体
@表(name=“BAND”)
公共类频带扩展超级用户{
@列(name=“PHONENUMBER”)
私有字符串电话号码;
@专栏(name=“传记”)
私弦传记;
@列(name=“DATES”,columnDefinition=“日期默认当前日期”)
@元素集合
私有列表日期=新建ArrayList();
公共频带(){}
公共波段(n线、e线、p线、ph线、bio线){
超级(n,e,p);
this.phoneNumber=ph_no;
这本传记=传记;
}
公共无效setPhoneNumber(字符串p)
{
this.phoneNumber=p;
}
公共字符串getPhoneNumber()
{
返回此.phoneNumber;
}
公共空间设置(字符串b)
{
这本传记=b;
}
公共字符串get传记()
{
归还这本传记;
}
公共作废设置日期(日期d)
{
日期。添加(d);
}
公共作废取消日期(日期d)
{
while(删除日期(d))
{}
}
公共列表getDates()
{
返回日期;
}
}

如何获取表描述?

SQL看起来无效,很可能是使用的成员存在问题。您可能希望尝试最新版本的JPA提供程序或记录一个bug,尽管我不确定ElementCollection是否允许使用语法成员

的成员是一个旧的JPQL(来自EJBQL)语法,现在在JPQL中使用JOIN通常更好

试试看


您应该使用@Temporal注释来注释
日期
@ElementCollection。同样,当使用@ElementCollection时,如果您想指定列的名称,我认为您不能使用@Column,而是可以使用@CollectionTable。不过,这应该是可行的:

@ElementCollection 
@Temporal(TemporalType.DATE)
private List<Date> dates = new <Date>ArrayList();
@ElementCollection
@时态(TemporalType.DATE)
私有列表日期=新建ArrayList();

请发布您的实体和表描述。实体发布后,我不知道如何在netbeans中获取表描述。您希望如何从单个列获取
列表
?我假设日期存储在另一个数据库表中,在这种情况下,您需要
@CollectionTable
您能详细说明一下吗?我想我可以将包含日期的列表保存在一列中。“ElementCollection值始终存储在单独的表中。”发件人:
@ElementCollection 
@Temporal(TemporalType.DATE)
private List<Date> dates = new <Date>ArrayList();