java - Spring数据映射对象

标签 java sql spring jpa

我需要连接 2 个表并以 JSON 格式返回数据。对于这个想法在一个HashMap中,但是不知道该怎么做。

用户

@Entity
public class User {
    //...
}

简介

@Entity
public class Profile {
    @JoinColumn(name = "user_id")
    @ManyToOne
    private User user;
    //...
}

存储库

public interface UserRepository extends JpaRepository<User, Long>{
//...
}

public interface ProfileRepository extends JpaRepository<Profile, Long>{
//...
}

我需要列表中每个用户的个人资料数量。

John 0
Victor 2
Maria 4
...

有什么更好的方法来做到这一点?

最佳答案

您可以创建一个映射表并使用该表来连接两个表:

@OneToMany(fetch=FetchType.LAZY)
@JoinTable
(
      name="USER_PROFILE",
      joinColumns={ @JoinColumn(name="USER_ID", referencedColumnName="ID")},
      inverseJoinColumns={ @JoinColumn(name="PROFILE_ID", referencedColumnName="ID")}
)
private List<Profile> profileList;

USER_PROFILE 表:

  • USER_ID 号码
  • PROFILE_ID 号

当您获取用户列表时,您可以对其进行迭代并获取每个用户的个人资料列表:

ArrayList<User> userList = UserRepository .findAll();
for(user:userList)
{
     user.getProfileList().size();  //You can get size for each user
}

关于java - Spring数据映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38067477/

相关文章:

java - 为什么 Kafka 消费者在启动时抛出 "java.lang.NoClassDefFoundError: kafka/consumer/ConsumerConfig"?

java - 如何计算总项目的总和

实现 Hibernate Search 时出现 Java 链接错误

sql - 如何在嵌套查询中两次避免 "group by"

java - 没有回滚的 Spring Transactional

java - 捕获空指针异常

Mysql 多表请求

我的查询中未设置 Mysql 变量

java - 在 Spring 中提供对请求映射/ Controller 的匿名访问

java - 不同 RDBMS 上的 NamedParameterJDBCTemplate 和函数语法