Jakarta ee javaee-持久性动态查询

Jakarta ee javaee-持久性动态查询,jakarta-ee,persistence,Jakarta Ee,Persistence,我对JavaEE和持久性技术非常陌生。 我正在尝试编写一个动态查询。详细信息: 有一个数据表(“newsactivites”),如下所示: id type 4 UploadVideo 4 CreateBlog 1 UploadPicture 10 UploadVideo 10 CreateBlog private List<Type> activities=new ArrayList<Type>(); @CollectionElement

我对JavaEE和持久性技术非常陌生。 我正在尝试编写一个动态查询。详细信息:
有一个数据表(“newsactivites”),如下所示:

id   type
4    UploadVideo
4    CreateBlog
1    UploadPicture
10   UploadVideo
10   CreateBlog
private List<Type> activities=new ArrayList<Type>();

@CollectionElements()
@Column(name="type")
@Enumerated(EnumType.STRING)
@JoinTable(name = "newsactivities", joinColumns = { @JoinColumn(name = "id") })
public List<Type> getActivities() {
      return activities;
}
此外,还有一个枚举:

public enum Type {
      UploadVideo("show.uploadedVideo"),
      UploadPicture("show.uploadedPicture"),
      CreateBlog("show.createdBlog");
}
所以我想写一个这样的方法:

id   type
4    UploadVideo
4    CreateBlog
1    UploadPicture
10   UploadVideo
10   CreateBlog
private List<Type> activities=new ArrayList<Type>();

@CollectionElements()
@Column(name="type")
@Enumerated(EnumType.STRING)
@JoinTable(name = "newsactivities", joinColumns = { @JoinColumn(name = "id") })
public List<Type> getActivities() {
      return activities;
}
private List activities=new ArrayList();
@集合元素()
@列(name=“type”)
@枚举(EnumType.STRING)
@JoinTable(name=“newsactivities”,joinColumns={@JoinColumn(name=“id”)})
公共列表活动(){
返回活动;
}
但我只想在给定时间返回一个id的活动:

public List<Type> getActivities(int id) { }
公共列表getActivities(int-id){

任何帮助都将不胜感激

如果我没有看错您的模型(我不确定),您应该有一个带有外键的实体类
Newsactivities
(在类
Newsactivities.class
)。然后您需要一个
列表
(而不是
列表
):

公共列表getActivities(int-id){
TypedQuery tq=em.createQuery(
从Newsactivities n中选择n,其中n.type=:type,Newsactivities.class);
设置参数(“类型”,id);
返回(tq.getResultList());
}

您有一个与对象的
类型相关联的

public class A{

private List<Type> activities=new ArrayList<Type>();

@CollectionElements()
@Column(name="type")
@Enumerated(EnumType.STRING)
@JoinTable(name = "newsactivities", joinColumns = { @JoinColumn(name = "id") })
public List<Type> getActivities() {
    return activities;
}
}

现在,您可以使用
findTypeById
,这要求您有
A
对象

不,我没有实体类NewsActivities。在数据表中,ID表示用户,type列表示用户的“活动”。如果给定用户有活动,我希望返回所有类型的活动。但您有datatable Newsactivitie是的,数据表的名称是newsactivites。