Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从@element集合列表中选择不同的值<;字符串>;在@NamedQuery中_Java_Hibernate_Jboss7.x_Jpa 2.0_Jpql - Fatal编程技术网

Java 从@element集合列表中选择不同的值<;字符串>;在@NamedQuery中

Java 从@element集合列表中选择不同的值<;字符串>;在@NamedQuery中,java,hibernate,jboss7.x,jpa-2.0,jpql,Java,Hibernate,Jboss7.x,Jpa 2.0,Jpql,对于一个项目,我试图在List@ElementCollection字段中查找所有不同的类别。每个foo实例都分配了一个或多个字符串类别。以下代码不起作用,因为JBOSS/Hibernate在将ear部署到服务器时引发异常: Error in named query: Foo.listUniqueCategories: org.hibernate.QueryException: not an entity [SELECT DISTINCT f.categories FROM com.Foo f]

对于一个项目,我试图在List@ElementCollection字段中查找所有不同的类别。每个foo实例都分配了一个或多个字符串类别。以下代码不起作用,因为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;

   ...
}
@Entity(name=“Foo”)
@NamedQuery(name=“Foo.listUniqueCategories”,query=“从Foo f中选择不同的f.categories”)
公共类实体
{
@Id()
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“id”)
保护长id;
@元素集合
@CollectionTable(name=“categories”,joinColumns=@JoinColumn(name=“foo\u id”))
私人名单类别;
...
}
这台机器有什么问题吗?甚至支持对@EllementCollection执行“选择不同”吗

感谢您的帮助!
Richard

您对HQL和SQL感到困惑。。将命名查询替换为以下内容。命名查询始终是HQL

SELECT distinct f.categories FROM FooEntity f
但是,我不确定这是否有效。如果您需要找出不同的类别,为什么要查询FooEntity?为什么不为类别创建一个实体并运行如下查询呢。另外,您在列表上调用联接列也是错误的,它应该在如下所示的实体类型上联接

   @ElementCollection
   @CollectionTable(name = "categories", joinColumns = @JoinColumn(name = "foo_id"))
   private List<**Category**> categories; // replace String with Category

其中类别是必须创建的新实体

您不能在查询中选择这样的集合:您将我放在了正确的轨道上。谢谢你的信息!我通过直接查询JPA生成的表将查询更改为@namedNaviRequesty来解决这个问题。。我的回答有点太早了。NamedNativeQuery方法导致了这个bug:所以我选择了一个名为Category的@Embeddeble类。
select distinct category.name from Category c