我的一个jersey-glassfish休息端点(来自域日志)抛出此错误:
引起:java.lang.IllegalArgumentException:为TypedQuery指定的类型[com.tanukis.streetama.entity.Flow]与查询返回类型[interface java.util.Set]不兼容 at org.hibernate.ejb.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:458) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery(EntityManagerWrapper.java:566) 在com.tanukis.streetama.dao.FluxManager.getBlacklist(FluxManager.java:571)
查询在orm.xml中定义:
SELECT DISTINCT s.blacklistedFlow FROM StreetamaUser s WHERE s.uid = :uid
这是我的StreetamaUser实体:
@ManyToMany(cascade= javax.persistence.CascadeType.ALL)
@JoinTable(
name="ws_user_blacklist",
uniqueConstraints = @UniqueConstraint(columnNames = { "blacklisted_flow_id", "user_id" }),
joinColumns = {
@JoinColumn(name="user_id",referencedColumnName="uid")
},
inverseJoinColumns = {
@JoinColumn(name="blacklisted_flow_id",referencedColumnName="id")
}
)
@XmlTransient
private Set<Flow> blacklistedFlow = new HashSet<Flow>();
查询电话:
List<Flow> result = em.createNamedQuery( "StreetamaUser.findBlacklist", Flow.class )
.setParameter("iduser", uid )
.setFirstResult(startitem)
.setMaxResults(itemnbr)
.getResultList();
我无法理解Hibernate异常。 getResultList返回一个列表,为什么它会抱怨查询返回类型?
答案 0 :(得分:1)
您可以尝试使用java.Util.List而不是Set。
答案 1 :(得分:0)
你没有。它始终是List
,即使它不包含像set这样的重复值。我不明白为什么它首先是重要的。