【问题标题】:Spring Boot Jpa mappingSpring Boot Jpa 映射
【发布时间】:2018-01-30 10:33:25
【问题描述】:

我正在学习 Spring Boot 数据 JPA。

这是我的代码 用户.java

    @Entity
    @Table(name = "user_Details")
    public class Users {

            @Id
            @GeneratedValue(strategy = GenerationType.AUTO)

            @Column(name = "user_id")
            private Integer id;     
            @Column(name = "name")
            private String name;
            @Column(name = "password")
             private String password;

           @OneToMany(cascade=CascadeType.ALL)
           @JoinColumn(name="user_id", referencedColumnName="user_id")
            private Set<usersAction> usersAction;

usersAction.java

    @Entity
    @Table(name="user_Action")
    public class usersAction {

           @Id
           @GeneratedValue(strategy = GenerationType.AUTO)

          @Column(name="action_id")
          private Integer Action_id;

           @Column(name="user_id")
              private Integer id;

           @Column(name="users_Role")
           private String usersRole;       

UsersRepository.java

package com.demo.repository;

import java.util.Set;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.demo.model.Users;
@Repository
public interface UsersRepository extends JpaRepository<Users, Integer> {

    @Query(value="select  u.password,u.user_id,u.name,ua.users_Role from user_details as u"
            + " inner join user_action as ua"
            + " on u.user_id=ua.user_id",nativeQuery=true)
    Set<Users> findById();

}

UsersController.java

@RestController
@RequestMapping("/users")
public class usersController {

    @Autowired
    UsersRepository usersRepository;


      @GetMapping("/all")
        public List<Users> getAll() {
            return usersRepository.findAll();
        }

      @RequestMapping("/byid")
      public Set<Users> findByName()
      {
          Set<Users> obj1=usersRepository.findById();
            return obj1;

      }  

}

当我访问这个http://localhost:8080/users/byid

我从 users_details 表中获取 id 、name 、password 以及来自 users_Action 的 Action_id、id 和 users_role 的输出

但我期望结果中只有 users_detail 中的名称和 users_Action 表中的 usersRole

为此我需要改变什么?

【问题讨论】:

  • 您需要创建投影。没有代码,帮不上忙
  • 你能给我举个例子吗

标签: java hibernate jpa spring-boot inner-join


【解决方案1】:

你需要创建这样的接口

interface UsersSummary {

  String getName();
   String getName();
   UsersActionSummary getUsersAction();

  interface UsersActionSummary {
    String getUsersRole();
    Integer getId();
    Integer getAction_Id();
  }
}

然后更改您的存储库方法以返回此

@Query(value="select  u.password,u.user_id,u.name,ua.users_Role from user_details as u"
        + " inner join user_action as ua"
        + " on u.user_id=ua.user_id",nativeQuery=true)
Collection<UsersSummary> findById();

【讨论】:

  • 需要再创建两个接口
  • 我收到这个错误 java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
  • 抱歉帮不上忙。需要完整的堆栈跟踪。更新您的问题
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 2018-02-26
  • 2021-11-18
  • 1970-01-01
  • 2018-07-12
  • 2021-10-16
  • 2019-07-13
  • 1970-01-01
相关资源
最近更新 更多