spring-data-jpa JPA:递归关系

6jygbczu  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(227)

这里我的表:

目前,我正在对实体进行建模,如下所示:

@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
@Entity
@Table(name = "GITTBUSUARIS")
public class Usuari {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "USUARIS_ID")
    private Integer id;

    @Column(name = "USUARIS_CODI")
    private String codi;

    @Column(name = "USUARIS_NOM")
    private String nom;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "id.usuari", fetch = FetchType.EAGER)
    private List<PermisUsuari> permisos;

}

As you can see, `permisos` is a `OneToMany` to `PermisUsuari`.

```lang-java
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
@Entity
@Table(name = "GITTBUSUARISPERMISOS")
public class PermisUsuari {

    @EmbeddedId
    private PermisUsuariId id;

}

PermisUsauriId为:

@Embeddable
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class PermisUsuariId implements Serializable {

    @ManyToOne(optional = false, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "USUARISPERMISOS_USUARIID", nullable = false)
    private Usuari usuari;

    @ManyToOne(optional = false, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "USUARISPERMISOS_ROLID", nullable = false)
    private Rol rol;

}

当我得到任何Usuari时,我会把它放到它们的PermisUsuari中,同时它也会得到它的Usuari,依此类推...
大概是这样的:

{
   "id":2,
   "codi":"11111111A",
   "nom":"Usuari A",
   "permisos":[
      {
         "id":{
            "usuari":{
               "id":2,
               "codi":"11111111A",
               "nom":"Usuari A",
               "permisos":[
                  {
                     "id":{
                        "usuari":{
                           "id":2,
                           "codi":"11111111A",
                           "nom":"Usuari A",
                           "permisos":[
                              {
                                 "id":{
                                    "usuari":{
                                       "id":2,
                                       "codi":"11111111A",
                                       "nom":"Usuari A",
                                       "permisos":[
                                          {
                                             "id":{
                                                "usuari":{
                                                   "id":2,
                                                   "codi":"11111111A",
                                                   "nom":"Usuari A",
                                                   "permisos":[
                                                      {
                                                         "id":{
                                                            "usuari":{
                                                               "id":2,
                                                               "codi":"11111111A",
                                                               "nom":"Usuari A",
                                                               "permisos":

关于如何解决这个模型的任何想法。

vngu2lb8

vngu2lb81#

你的实体模型太奇怪了...类PermisUsauriId在类PermisUsuari里面,它也在类Usuari里面,它就像循环一样永远不会停止。我想JPA对此无能为力,试着重建一个更好的数据库关系。

相关问题