【发布时间】: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