我在实体类Voter中编写了一个命名查询
NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password),
我想要调用这个命名查询,并且我还需要设置voterID和密码。
你能帮帮我吗。谢谢
发布于 2010-04-30 20:17:24
我想您在NamedQuery注释中遗漏了@符号?
在代码中,您可以这样调用它:
List results = em.createNamedQuery("Voter.findvoter")
.setParameter("voterID", "blah")
.setParameter("password","blahblahblah")
.getResultList();
发布于 2017-04-21 20:45:50
实际上布伦特是对的,你的NameQuery应该是这样的,
@NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID AND where v.password = :password")
@Entity
public class Voter implements Serializable{ ... }
在别的地方你应该试试这个(迪克已经说过了)
public class VoterFasade{
public List<Voter> findVoter(long id,String password){
List<Voter> results = em.createNamedQuery("Voter.findvoter")
.setParameter("voterID", id)
.setParameter("password",password)
.getResultList();
return result;
}
}
然后你可以像这样使用它
@Inject
VoterFasade voterFasade;
///
long id=12;
voterFasade.findVoter(id);
应该可以正常工作。(这是一个未编译的代码)。
您也可以使用存储库执行此操作,请查看下面的链接part Repository Listing23。示例存储库enter link description here
https://stackoverflow.com/questions/2743649
复制相似问题