Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Crud存储库如何将'findBy'与数据成员';s数据成员_Spring_Spring Boot_Repository_Crud_Spring Repositories - Fatal编程技术网

Spring Crud存储库如何将'findBy'与数据成员';s数据成员

Spring Crud存储库如何将'findBy'与数据成员';s数据成员,spring,spring-boot,repository,crud,spring-repositories,Spring,Spring Boot,Repository,Crud,Spring Repositories,我有一个这样的结构- @Entity @Table("transaction") public class TransactionBean{ @Id Long txnId; //other stuff } @Entity @Table("someclass") public class SomeClass{ @Id TransactionBean transactionBean; //other stuff } 以及每个项目的存储库- p

我有一个这样的结构-

@Entity
@Table("transaction")
public class TransactionBean{

    @Id
    Long txnId;

    //other stuff
}
@Entity
@Table("someclass")
public class SomeClass{

    @Id
    TransactionBean transactionBean;

    //other stuff
}
以及每个项目的存储库-

public interface TransactionRepo extends CrudRepository<TransactionBean, Long){
    //some stuff
}

public interface SomeClassRepo extends CrudRepository<SomeClass, TransactionBean){
    //some stuff
}

我理解你这样做的方式(我目前正在研究类似的东西)是:

1) 使用该方法定义一个新接口

public interface CustomSomeClassRepo{
    public SomeClass findByTxnId(Long id);
}
2) 让回购接口也扩展此接口:

public interface SomeClassRepo extends CrudRepository<SomeClass, TransactionBean),
                                       CustomSomeClassRepo{
        //some stuff
}
@PersistenceContext
将注入
EntityManager
实例


4) 最后,您可以从
SomeClassRepo
的实例调用
findByTxnId(Long id)

请看一看,感谢您解决了我的问题。我已经实现了max提供的解决方案,而且更容易实现,请查看此链接以获取有关它的详细信息是的,我同意,我认为这样做的方法是实现不适合按属性查找的自定义查询。
public interface SomeClassRepo extends CrudRepository<SomeClass, TransactionBean),
                                       CustomSomeClassRepo{
        //some stuff
}
public class CustomSomeClassRepoImpl implements CustomSomeClassRepo{

    @PersistenceContext
    EntityManager em;

    @Override
    public SomeClass findByTxnId(Long id){

        /* Here you run the Query you need using the EntityManager and the id.
           and return an instance of SomeClass;
         */

    }
}