在使用Spring Data JPA存储库和使用@query
注释的方法(如下面的方法)时,我不知道这个查询应该在userrepository
中还是在addressrepository
中。当您想要从两个实体返回属性时,情况就更复杂了。谢谢!
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u.name from User u JOIN u.address a where u.emailAddress = :emailAddress and a.zipcode=:zipcode")
User findByEmailAddressAndZipCode(String emailAddress, String zipcode);
}
它返回一个user
I,因此希望它存在于userrepository
中。用户
已经通过同名属性知道地址
了,因此userrepository
也可以这样做。
用户
包含对地址
的引用这一事实与选择正确的存储库无关。
如果您的查询返回的内容与user
和address
完全不同,例如关于每个城市用户数的一些统计信息,那么使用一个单独的存储库是有意义的,它可以基于映射到视图的实体,也可以基于独立于Spring数据的完整自定义实现。这种实体和存储库位于不同的有界上下文中。
但是,您应该考虑的另一个问题是,您是否需要/想要addressrepository
。显然,我们几乎不知道您的域,但从我所看到的情况来看,地址
似乎不是独立于用户
而存在的,因此它应该是用户
聚合的一部分,而没有自己的存储库。参见https://stackoverflow.com/A/21277087/66686
我想用spring数据写一个查询,可以找到所有有自己的狗和车的人…可以有任何身体帮助吗
让我说清楚点。我使用spring-boot@entityscan注释来执行包扫描,如果在两个不同的包中发现了两个同名的实体,那么应该有一种方式,即只有一个实体被选中并注册,而另一个实体被拒绝。就实体名称而言,甚至我都知道没有两个实体可以有相同的名称。我是在spring-boot和spring-data-jpa的上下文中问这个问题的 由于DefaultOrganization用@PrimaryEnt
在Spring Data JPA的“入门”示例中,我们创建了一个扩展CrudRepository的接口。但是,它只处理一个实体: 在现实世界的应用程序中,有许多实体(表),我们需要对它们进行CRUD操作。使用具有多个(相关或无关)实体的Spring数据JPA存储库的正确方法是什么? 我是否必须为每个实体创建接口并逐个自动连接它们(现在听起来这是一个非常疯狂的想法)?
我需要帮助设置一个应用程序,该应用程序将内部(主)MS SQL数据库DB1中的数据子集复制到另一个MySQL数据库DB2中,该数据库在Web服务器上运行,供Web应用程序使用(即,我想同步这两个数据库)。这两个数据库上的表具有相同的名称,尽管DB2上只定义了属性/列的子集。我想使用(xml配置的)spring、spring data jpa(即JpaRepository接口)和hibernate作
我目前正在尝试使用spring数据存储库删除我的一些实体。delete调用工作时没有任何异常/错误消息,但之后不会删除实体。 这些是我的实体: 而且 存储库非常简单: delete调用类似于 有什么想法为什么这个变化没有反映在数据库中吗? 编辑1: 我找到了变通办法,但我还是不明白真正的问题是什么。如果我像这样删除帖子(有几个例外,因为违反了约束,但帖子仍然会被删除),它就“起作用”了: 编辑2:
假设我有一个MySQL存储过程,其中包含以下选择: 如何在中使用注释,以便我可以获得结果?像这样: