我有一个用户存储库,它是这样声明的
public interface UserRepository extends JpaRepository<ApplicationUser, Long>
在其中一个服务中,我想获取用户,在返回之前,我想将密码更改为虚拟文本,但我不想保存该实体。
ApplicationUser user = userRepository.findByUsername(username);
user.setPassword("CENSORED");
return user;
使用实体管理器,我可以执行getReview
并获取副本,但如何使用JPARepository做到这一点?
我应该用< code > findbysusername()获取对象,然后用< code>getOne()函数使用它的id吗?
ApplicationUser user = userRepository.findByUsername(username);
ApplicationUser user2 = userRepository.getOne(user.getId());
user2.setPassword("CENSORED");
return user;
你可以问自己一个问题:这种方法的用例是什么?
很可能您可以从映射字段中省略密码,并提供特殊方法来验证(散列和加盐)密码或更改它。
关于如何创建持久化实体的变体的机制,请看一下克隆JPA实体
我使用hibernate、spring boot data jpa和spring boot data rest编写应用程序。 我的实体类不包含任何注释,所有orm映射都放在几个hbm中。xml文件。 Hibernate工作正常,以及findOne等JpaRepository的所有方法。JpaRepository提供的rest接口说的问题 我发现将@Id添加到MyEntity类可以解决这个问题。然而
如何将其JPA实体配置为不获取相关实体,除非提供了特定的执行参数。 根据Spring的文件4.3.9。配置Fetch和LoadGraphs时,需要使用EntityGraph注释来指定查询的Fetch策略,但这并不能让我在运行时决定是否要加载这些实体。 我可以在单独的查询中获取子实体,但为了做到这一点,我需要将我的存储库或实体配置为不检索任何子实体。不幸的是,我似乎找不到任何关于如何执行此操作的策略
我设置了多个这样的父子实体。 在前端,我有一个页面显示一个营表,供用户选择以查看详细信息。此页面依赖于RESTful API,并将存储库和服务类设置为RESTful API。 我的问题是JPARepository的方法不仅返回营条目列表,还返回营链接到的父旅实体,以及每个营包含的所有关联子连。它会使JSON数据膨胀(我不需要表中的所有细节),并使调试时难以读取,更不用说将所有数据转储到客户端的安全
我有这个实体(为简洁起见省略注释): 我必须得到一个不同的值的列表为一个特定的 在我的JpaRepository中我有以下内容: 如果没有注释,则返回ID,而不是值。生成的SQL如下所示: 但我需要的是不同的类别,而不是产品实体。除此之外,我在上面添加了注释。但现在我得到了这个错误: 但是我不能将添加到结果列表中,因为这会使无效,因为是主键。 所以我要么需要一个合适的方法名来自动生成查询,要么需要
场景:一个应用程序有多个实体。每个实体表示一个数据库表。所有数据库表都有一个主键列,但列名不同。 实体示例: 服务类示例: 问题:如果我像下面这样声明dao接口: 将参数作为发送到JPararePository中,然后我的方法在服务类中运行良好。 但是Spring不允许在没有列的情况下创建类。所以我必须声明一个ID列。同样,在我的数据库中,每个表都有一个主列,但所有表的该列的名称是不同的。例如,表
在我的示例中,如何使用JPA CriteriaBuilder(如hibernate Criteria)这样的标准进行选择? 和