Java 在与JPA的多对多关系中选择特定列
我必须为数据库中的两个实体创建模型。型号Java 在与JPA的多对多关系中选择特定列,java,hibernate,spring-boot,jpa,spring-data-jpa,Java,Hibernate,Spring Boot,Jpa,Spring Data Jpa,我必须为数据库中的两个实体创建模型。型号用户和型号角色。这两个实体具有多对多关系。在模型文件中,我有classUser.java: @Entity @Table(name = "User") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String username; private String
用户
和型号角色
。这两个实体具有多对多关系。在模型文件中,我有classUser.java
:
@Entity
@Table(name = "User")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String username;
private String password;
private String name;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(
name = "role_user",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")})
private Set<Role> roles;
//getters and setters
}
@Entity
@Table(name = "Role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private int id;
private String role;
@ManyToMany(mappedBy = "roles", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<User> users;
//getters and setters
}
我还为他们提供了存储库/DAO:
public interface UserRepository extends JpaRepository<User, Integer>{}
public interface UserRepository扩展了JpaRepository{}
及
公共接口角色库扩展了JpaRepository{}
现在,当我从类
角色
中获取所有结果时,它返回实体用户
中的所有列,我如何指定我只需要用户
实体中的列名称
?我是否应该只使用我需要的列构建另一个模型,或者有任何简单的方法来选择特定的列?如果您以JSON格式返回它们,您可以在列上方添加一个@JsonIgnore。@mkane,@JsonIgnore没有这个问题,我的问题是我可以看到User类中的所有列(id、用户名、密码和名称)在我的例子中,我只想看到列name
,而不是所有列哦,好吧,这就是为什么我想在id、用户名和密码中添加@JsonIgnore.@mkane,好的,可以了!有没有办法我可以把它作为参数传递,有时候我需要其他列。我不认为你可以把它作为参数传递,但你可以看看在@JsonSerialize注释中,并向其传递一个自定义序列化程序,在该自定义序列化程序类中,您可以添加关于何时忽略和何时不忽略的逻辑。。。
public interface RoleRepository extends JpaRepository<Role, Integer> {}