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字段。但是我可以添加一个代理主键,而不使用它。谢谢你的推荐@贝朗·赛德扎德:谢谢你提供的信息。