当前位置: 首页 > 知识库问答 >
问题:

如何在JPA criteria api查询中按对象值获取实体

越涛
2023-03-14

我将JPA与JSF datatable一起使用,并进行延迟加载。在这里,一辆车可以被许多用户拥有。因此,当我登录到该应用程序时,我希望登录的用户拥有的汽车(假设它是userId=1)。我有一个映射表“Cars\u User”,其中包含carId和userId列。我的实体就像我的汽车类

@Entity
@Table(name="car")
public class Car implements Serializable {
 private static final long serialVersionUID = 1L;

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private String id;

 @Transient
 private boolean myCar;

 @NotNull
 @Size(min = 1, max = 50)
 public String name;

 @OneToMany(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY, orphanRemoval = true)
 @JoinTable(name = "Cars_User", joinColumns = @JoinColumn(name = "carId"), inverseJoinColumns = @JoinColumn(name = "userId"))
 private List<User> carUsers = new ArrayList<User>();

 getters ...

 setters ...
}

用户类

@Entity(name = "User")
public class User implements Serializable {

   private static final long serialVersionUID = 1L;

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private int id;

   private String firstName;

   private String lastName;
}

我在这个链接中找到了字符串集合列表的一个答案,但在我的例子中如何实现呢。我想在CriteriaAPI中获取所有Cars实体,该api包含carUsers列表中登录的用户id“userId”。有人能帮忙吗?

共有1个答案

曹均
2023-03-14

我找到了解决办法。我已经在isMember函数中传递了登录的用户对象“user”。这可能对某人有帮助。

CriteriaBuilder criteriaBuilder = em.getEntityManagerFactory().getCriteriaBuilder(); 
CriteriaQuery<Car> criteria = criteriaBuilder.createQuery(Car.class);
Root<Car> root = criteria.from(Car.class);
criteria.where(criteriaBuilder.isMember(user, root.get(Car_.carUsers)));
List<Car> cars = em.createQuery(criteria).getResultList();
 类似资料:
  • 我是Javascript新手,我正试图从包含多个对象的数组中获取id键的值。 通过 for..在循环中,我需要对象的id - 如1,2或3 - 与不同的值进行比较。 我试着这样做: 但是,我这样做了,删除Id值返回未定义。 我想不通为什么返回未定义,我无法解决这个问题。 我希望我能很好地表达自己,对不起我的英语不好。

  • 本文向大家介绍如何在JavaScript中获取对象的值?,包括了如何在JavaScript中获取对象的值?的使用技巧和注意事项,需要的朋友参考一下 有一些方法,例如Object.values()来获取对象的值。但是,通过这些方法,找出值的过程很漫长。为了缓解这个,Underscore.js的JavaScript库已经提供了一种方法称为_.values() 。此方法不需要for循环即可执行值。这是执

  • 问题内容: 当我想使用get()函数选择对象时 如果get函数不返回查找值,则“不存在匹配查询”。发生错误。 如果我不需要此错误,我将使用try和except函数 但是我认为这不是自使用以来最好的方法 请推荐一些想法或代码示例来解决此问题 问题答案: 这取决于你不存在时要执行的操作。 那里get_object_or_404: 在给定的模型管理器上调用get(),但是它引发Http404而不是模型的

  • 问题内容: 我在一个模型中有一个领域,例如: 现在,我需要按日期范围过滤对象。 如何过滤日期在和之间的所有对象? 问题答案: 用 或者,如果你只是想按月过滤:

  • 问题内容: 我正在struts上从事Web服务。现在我想要json对象使用其键值。然后,我必须发布类似数组的内容作为响应。我不知道如何在Struts中做到这一点。我知道如何在Servlet中执行此操作。因此,我使用的是我尝试过的以下代码,但我认为Struts中的代码有所不同。 因此,如何在Struts中做到这一点。还请告诉我如何解析json数组作为响应。 问题答案: 使用JSON无需将JSON发送

  • 问题内容: 寻找所有的行,其中某个json列包含一个空对象。对于JSON数组,或者在对象中寻找特定键,这是可能的。但是我只想知道对象是否为空。似乎找不到要执行此操作的运算符。 问题答案: 有 没有平等(或等于)运算符 的数据类型 作为一个整体,因为平等是很难建立。 在可行的情况下,请考虑使用Postgres 9.4或更高版本。有关dba.SE(上一章)的相关答案中的更多详细信息: 如何从Postg