Java 如何在ResultsMapping中为@Id字段定义空值?

Java 如何在ResultsMapping中为@Id字段定义空值?,java,ejb-3.0,resultset,Java,Ejb 3.0,Resultset,我有这样一个问题: SELECT sender, sum(size) AS size,COUNT(*) AS count FROM inmail WHERE ( date > '2011.06.01' AND w.l_date < '2011.06.10' ) GROUP BY sender ORDER BY count DESC; sender size count ------------------+------------+--

我有这样一个问题:

SELECT sender, sum(size) AS size,COUNT(*) AS count FROM inmail 
WHERE  ( date > '2011.06.01' AND w.l_date < '2011.06.10' ) 
GROUP BY sender ORDER BY count DESC;
sender             size         count
------------------+------------+------------
                  | 3743040708 |  69
 Phrase1          |    1332377 |  13
 Phrase2          |          0 |  1
 Phrase3          |          0 |  1 
问题来了:我的表中的发送方行有时为空,查询返回如下内容:

SELECT sender, sum(size) AS size,COUNT(*) AS count FROM inmail 
WHERE  ( date > '2011.06.01' AND w.l_date < '2011.06.10' ) 
GROUP BY sender ORDER BY count DESC;
sender             size         count
------------------+------------+------------
                  | 3743040708 |  69
 Phrase1          |    1332377 |  13
 Phrase2          |          0 |  1
 Phrase3          |          0 |  1 
这在我的EJB映射中导致了问题,因为发送方字段被定义为@Id,结果服务器抛出null指针异常,表示Id字段不能为null

我很确定这可能是一个普遍的问题,但我不知道如何用谷歌来形容这个问题。是否有人对此问题提出了解决方案或解决方法?我试图将大小定义为@Id,但我知道这不是一个好的解决方案


提前谢谢

简而言之,您的表没有主键,对吗?如果是这样,JPA就行不通了。使用JDBC,或者做正确的事情,将代理主键添加到表中。JPA类不再称为EJB。它们被称为实体。我的表有一个主键和一个不相关的ID字段。但是我可以添加一个代理主键,而不使用它。谢谢你的推荐@贝朗·赛德扎德:谢谢你提供的信息。