概述:
我开始学习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() +
"}";
}
}
所以我想可能我必须使用休眠模式来获取用户
问题:
注释:
就像您可以看到我正在学习一样,所以我不熟悉Java,Jhipster, Liquidbase等...所以如果我错过了一些重要信息,请 评论它,以便我可以添加它。
im用用户DTO扩展了ExtendedUser DTO,这是因为 Jhipster不允许我编辑用户实体以添加新字段,因此即时保存用户和extendedUser都很好 在那一边,我正在获取区域,我可以正确添加和删除。