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

在Hibernate中查找没有id的对象

马银龙
2023-03-14

我用的是Spring。我有一个用户表。

当一个人登录系统时,他会向我发送他的凭证(即用户名和密码)。

我用增量生成的uid(即userid是主键)将我的用户存储在数据库中。

我还在数据库中存储了用户名、密码等信息。我需要做的是,当用户连接到Rest连接时,我需要检查数据库是否有这个用户。如果他存在,那么我需要检查密码是否匹配。我需要通过用户名而不是uid进行检查

我的程序中根本没有会话或任何东西(或者据我所知,我根本没有在代码中编写任何会话或会话工厂)

我的存储库类:

public interface UserRepository extends JpaRepository<User, Long>{
}

我的用户DAO

@Service
public class UserDAO {

    @Autowired
    UserRepository userRepository;

    public User findByUsername(String username)
    {
        //what to write here

    }
}

我查过这个解决方案,但正如我上面所说的,我没有会话。

共有1个答案

郭乐意
2023-03-14

Spring确实提供了您所需要的所有必要的依赖项和函数。

回到你的问题上来。您可以在Spring中轻松查询非id字段,只需提供一个存储库,并在其中提供具有特定命名约定的方法签名,以提供适当的结果。

您可以使用@PersistenceContext注入EntityManager,这也让您可以访问会话,它将注入Spring管理的共享EntityManager

此外,您可以使用命名约定,从存储库(或其任何子项)扩展用户存储库,就像您已经在做的那样,并提供一个方法签名,比如findBy

如果使用存储库方法,则不需要实现DAO。

有关详细说明,请参阅Spring的参考文档。

 类似资料:
  • 问题内容: 我有一个按钮 我无法通过ID或名称找到它,需要提交表格。 我尝试这样做:或者,WebDriver在每个元素上都有便捷的方法“提交”。如果在表单中的元素上调用此方法,则WebDriver将在DOM上移动,直到找到封闭的表单,然后在该表单上调用Submit。如果元素不是表单,则将引发NoSuchElementException:element.submit() http://seleniu

  • 问题内容: 我有一个数据库视图,该视图产生的结果集没有真正的主键。我想使用Hibernate / Persistence将结果集映射到Java对象上。当然,因为没有PK,所以我不能用修饰任何字段。 部署时,Hibernate抱怨缺少该组件。我该如何解决? 问题答案: 如果存在使行唯一的列组合,请围绕列组合建模主键类。如果没有,您基本上就不走运了-但您应该重新检查视图的设计,因为它可能没有意义。 有

  • 问题内容: 我有一个数组: 我无法更改数组的结构。我正在传递ID为,我想获取数组中的该对象。 如何在JavaScript或jQuery中做到这一点? 问题答案: 使用方法: 从MDN: 如果数组中的元素满足提供的测试功能,则该方法返回数组中的第一个值。否则返回。 如果要查找其 索引 ,请使用: 从MDN: 该方法返回满足提供的测试功能的数组中第一个元素的索引。否则返回-1。 如果要获取匹配元素的数

  • 你会认为这是一件简单的事情。我有一个在我的集合中的对象ID列表。我想根据对象ID获得一条记录。谷歌过,但没有任何帮助。 所以我有对象id:5106c7703abc120a04070b34 此打印: 我试过上述发现的不同版本。它们都无法编译: 查找({_id= 它们都不起作用。如何使用对象id查找(findone)单个记录??

  • 问题内容: 在python中找到对对象的所有引用的好方法是什么? 我问的原因是看起来我们有“内存泄漏”。我们正在将图像文件从Web浏览器上传到服务器。每次执行此操作时,服务器上的内存使用量都会与刚刚上传的文件的大小成比例地增加。python垃圾回收永远不会释放该内存,因此我认为即使在每次请求结束时,也可能存在指向图像数据的流浪引用,这些引用并没有被删除或超出范围。 我认为能够问python很好:“

  • 我有一个带有EditText的对话框,在那里,它要求一个钱包,用户写它。 之后,这个钱包应该存储在一个字符串中,但它说它是空的。 尝试在空对象引用上调用虚拟方法android.text.可编辑android.widget.EditText.getText() 如果我使用活动中的编辑文本,效果很好。但当我在EditText(eTW)对话框中执行时,它失败了。 这是我的密码。