Spring数据映射对象

时间:2016-06-28 05:09:04

标签: 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
...

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

1 个答案:

答案 0 :(得分:1)

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

@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
}