【发布时间】:2014-11-16 14:18:46
【问题描述】:
对于一个项目,我试图在 List @ElementCollection 字段中查找所有不同的类别。每个 foo 实例都分配了一个或多个 String 类别。下面的代码不起作用,因为 JBOSS/Hibernate 在部署 ear 到服务器时会抛出异常:
Error in named query: Foo.listUniqueCategories: org.hibernate.QueryException: not an entity [SELECT DISTINCT f.categories FROM com.Foo f]
我有课:
@Entity(name = "Foo")
@NamedQuery(name = "Foo.listUniqueCategories", query = "SELECT DISTINCT f.categories FROM Foo f")
public class FooEntity
{
@Id()
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
protected Long id;
@ElementCollection
@CollectionTable(name = "categories", joinColumns = @JoinColumn(name = "foo_id"))
private List<String> categories;
...
}
select distinct 有什么问题吗?是否支持在 @EllementCollection 上执行“SELECT DISTINCT”?
任何帮助表示赞赏! 理查德
【问题讨论】:
-
您不能在查询中选择这样的集合:forum.hibernate.org/viewtopic.php?f=1&t=963660
-
你让我走上了正轨。谢谢你的信息!我通过将查询更改为直接查询 JPA 生成的表的 @NamedNativeQuery 来解决它。
-
嗯..我的回答有点太早了。 NamedNativeQuery 方法导致了这个错误:jdevelopment.nl/hibernates-pure-native-scalar-queries-supported 所以我要使用一个名为 Category 的 @Embeddable 类。
标签: java hibernate jboss7.x jpa-2.0 jpql