在非所有者实体中获得ManyToMany关系

时间:2019-01-25 06:24:42

标签: java jhipster dto

概述:

我开始学习Jhipster,所以我有两个实体ExtendedUser和Areas它们具有ManyToMany关系,在ExntendedUser实体中一切正常,但是我希望看到分配给每个区域的用户,但无法使我的DTO显示用户。

我的想法:

认为我在域/Area.java中的@manyTomany映射不正确

在domain / ExtendedUser.java中,我得到了:

  @ManyToMany
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @JoinTable(name = "extended_user_areas",
               joinColumns = @JoinColumn(name = "extended_users_id", referencedColumnName = "id"),
               inverseJoinColumns = @JoinColumn(name = "areas_id", referencedColumnName = "id"))
    private Set<Area> areas = new HashSet<>();
 public Set<Area> getAreas() {
        return areas;
    }

    public ExtendedUser areas(Set<Area> areas) {
        this.areas = areas;
        return this;
    }

    public ExtendedUser addAreas(Area area) {
        this.areas.add(area);
        area.getUsuarios().add(this);
        return this;
    }

    public ExtendedUser removeAreas(Area area) {
        this.areas.remove(area);
        area.getUsuarios().remove(this);
        return this;
    }

    public void setAreas(Set<Area> areas) {
        this.areas = areas;
    }

但是在我的domine / Area.java中,我有这个

@ManyToMany(mappedBy = "areas")
    @JsonIgnore
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<ExtendedUser> usuarios = new HashSet<>();

  public Set<ExtendedUser> getUsuarios() {
        return usuarios;
    }

    public Area usuarios(Set<ExtendedUser> extendedUsers) {
        this.usuarios = extendedUsers;
        return this;
    }

    public Area addUsuario(ExtendedUser extendedUser) {
        this.usuarios.add(extendedUser);
        extendedUser.getAreas().add(this);
        return this;
    }

    public Area removeUsuario(ExtendedUser extendedUser) {
        this.usuarios.remove(extendedUser);
        extendedUser.getAreas().remove(this);
        return this;
    }

    public void setUsuarios(Set<ExtendedUser> extendedUsers) {
        this.usuarios = extendedUsers;
    }

另一方面,在 extenendedUser DTO 中,我有这个:

extendedUserDTO
package com.gits.sigem.service.dto;

import com.gits.sigem.domain.User;
import com.gits.sigem.domain.Area;
import com.gits.sigem.domain.Desarrollo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;
import java.util.Objects;
import java.util.stream.Collectors;
import org.hibernate.Hibernate;

/**
 * A DTO for the ExtendedUser entity.
 */
public class ExtendedUserDTO extends UserDTO implements Serializable {
    private final Logger log = LoggerFactory.getLogger(ExtendedUserDTO.class);
    private Long id;

    private String puesto;

    private BigDecimal sueldo;

    private LocalDate fechaIngreso;

    private Long usuarioId;

    private Set<Area> areas = new HashSet<>();

    private Set<Desarrollo> desarrollos = new HashSet<>();

    private Long coordinadorId;

    private String coordinadorLogin;

    public ExtendedUserDTO(){

    }

    public ExtendedUserDTO(User user){
        super(user);
        this.puesto = user.getExtendedUser().getPuesto();
        this.sueldo = user.getExtendedUser().getSueldo();
        this.fechaIngreso = user.getExtendedUser().getFechaIngreso();
        this.id = user.getId();
        this.usuarioId = user.getId();
        this.coordinadorLogin = user.getExtendedUser().getCoordinador().getLogin();
        this.coordinadorId = user.getExtendedUser().getCoordinador().getId();
        Hibernate.initialize(user.getExtendedUser().getAreas());
        this.areas = user.getExtendedUser().getAreas();
        Hibernate.initialize(user.getExtendedUser().getDesarrollos());
        this.desarrollos = user.getExtendedUser().getDesarrollos();
    }
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getPuesto() {
        return puesto;
    }

    public void setPuesto(String puesto) {
        this.puesto = puesto;
    }

    public BigDecimal getSueldo() {
        return sueldo;
    }

    public void setSueldo(BigDecimal sueldo) {
        this.sueldo = sueldo;
    }

    public LocalDate getFechaIngreso() {
        return fechaIngreso;
    }

    public void setFechaIngreso(LocalDate fechaIngreso) {
        this.fechaIngreso = fechaIngreso;
    }

    public Long getUsuarioId() {
        return usuarioId;
    }

    public void setUsuarioId(Long userId) {
        this.usuarioId = userId;
    }

    public Set<Area> getAreas() {
        return areas;
    }

    public void setAreas(Set<Area> areas) {
        this.areas = areas;
    }

    public Set<Desarrollo> getDesarrollos() {
        return desarrollos;
    }

    public void setDesarrollos(Set<Desarrollo> desarrollos) {
        this.desarrollos = desarrollos;
    }

    public Long getCoordinadorId() {
        return coordinadorId;
    }

    public void setCoordinadorId(Long userId) {
        this.coordinadorId = userId;
    }

    public String getCoordinadorLogin() {
        return coordinadorLogin;
    }

    public void setCoordinadorLogin(String userLogin) {
        this.coordinadorLogin = userLogin;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        ExtendedUserDTO extendedUserDTO = (ExtendedUserDTO) o;
        if (extendedUserDTO.getId() == null || getId() == null) {
            return false;
        }
        return Objects.equals(getId(), extendedUserDTO.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(getId());
    }

    @Override
    public String toString() {
        return "ExtendedUserDTO{" +
            "id=" + getId() +
            ", puesto='" + getPuesto() + "'" +
            ", sueldo=" + getSueldo() +
            ", fechaIngreso='" + getFechaIngreso() + "'" +
            ", usuario=" + getUsuarioId() +
            ", coordinador='" + getCoordinadorLogin() + "'" +
            "}";
    }
}

我的区域DTO 中,我有这个:

 package com.gits.sigem.service.dto;

    import com.gits.sigem.domain.ExtendedUser;

    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Objects;
    import java.util.Set; 
    /**
     * A DTO for the Area entity.
     */
    public class AreaDTO implements Serializable {

        private Long id;

        private String nombre;

        private String mision;

        private String vision;

        private String valores;

        private String politicaCalidad;

        private String credo;

        private Set<ExtendedUser> usuarios  = new HashSet<>();


        private String principios;

        private Long desarrolloId;



        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getNombre() {
            return nombre;
        }

        public void setNombre(String nombre) {
            this.nombre = nombre;
        }

        public String getMision() {
            return mision;
        }

        public void setMision(String mision) {
            this.mision = mision;
        }

        public String getVision() {
            return vision;
        }

        public void setVision(String vision) {
            this.vision = vision;
        }

        public String getValores() {
            return valores;
        }

        public void setValores(String valores) {
            this.valores = valores;
        }

        public String getPoliticaCalidad() {
            return politicaCalidad;
        }

        public void setPoliticaCalidad(String politicaCalidad) {
            this.politicaCalidad = politicaCalidad;
        }

        public String getCredo() {
            return credo;
        }

        public void setCredo(String credo) {
            this.credo = credo;
        }

        public String getPrincipios() {
            return principios;
        }

        public void setPrincipios(String principios) {
            this.principios = principios;
        }

        public Long getDesarrolloId() {
            return desarrolloId;
        }

        public void setDesarrolloId(Long desarrolloId) {
            this.desarrolloId = desarrolloId;
        }

        public Set<ExtendedUser> getUsuarios() {
            return usuarios;
        }

        public void setUsuarios(Set<ExtendedUser> extendedUsers) {
            this.usuarios = extendedUsers;
        }


        @Override
        public boolean equals(Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || getClass() != o.getClass()) {
                return false;
            }

            AreaDTO areaDTO = (AreaDTO) o;
            if (areaDTO.getId() == null || getId() == null) {
                return false;
            }
            return Objects.equals(getId(), areaDTO.getId());
        }

        @Override
        public int hashCode() {
            return Objects.hashCode(getId());
        }

        @Override
        public String toString() {
            return "AreaDTO{" +
                "id=" + getId() +
                ", nombre='" + getNombre() + "'" +
                ", mision='" + getMision() + "'" +
                ", vision='" + getVision() + "'" +
                ", valores='" + getValores() + "'" +
                ", politicaCalidad='" + getPoliticaCalidad() + "'" +
                ", credo='" + getCredo() + "'" +
                ", principios='" + getPrincipios() + "'" +
                ", usuarios='" + getUsuarios() + "'" +
                ", desarrollo=" + getDesarrolloId() +
                "}";
        }
   }

所以我想可能我必须使用休眠模式来获取用户

问题:

    我正在以正确的方式做@manyTomany关系吗?在
    domine / Area.java
  1. 如何在区域的DTO中使用Hibernate来吸引用户?

注释:

  • 就像您可以看到我正在学习一样,所以我不熟悉Java,Jhipster, Liquidbase等...所以如果我错过了一些重要信息,请 评论它,以便我可以添加它。

  • im用用户DTO扩展了ExtendedUser DTO,这是因为 Jhipster不允许我编辑用户实体以添加新字段,因此即时保存用户和extendedUser都很好 在那一边,我正在获取区域,我可以正确添加和删除。

0 个答案:

没有答案