简体   繁体   中英

two relations on one entity, jhipster

i have this model, and i trying to create the model on jhipster 4 and JDLStudio to generate entityes.

entity Cliente{
    nombre String,
    apellido String,
    celular String,
    telefono String,
    email String,
    domicilio String,
    colegio String
}

entity Modelo{
    imagen ImageBlob,
    nombreModelo String,
    colorVestido String,
    observacion String
}

entity Medida{
    contornoBusto Double,
    anchoPecho Double,
    altoBusto Double,
    bajoBusto Double,
    alturaPinza Double,
    separacionBusto Double,
    talleDeltantero Double,
    talleEspalda Double,
    largoCorset Double,
    costado Double,
    hombro Double,
    anchoHombro Double,
    largoManga Double,
    sisa Double,
    cintura Double,
    anteCadera Double,
    cadera Double,
    largoPollera Double,
    fechaMedida LocalDate
}

entity Dominio{
    descripcion String
}
entity ValorDominio{
    descripcion String
}

entity Encargo{
    importeTotal Double,
    fechaEncargo LocalDate,
    fechaEntrega LocalDate,
    detalleVestido String
}

entity Pago{
    fechaPago LocalDate,
    importe Double,
    detalle String,
    numeroRecibo Integer
}


/**
  * Relacion Una empresa tiene uno o muchos usuarios
  */
relationship OneToMany {
    Cliente{modelo(nombre)} to Modelo,
    Cliente{medida(nombre)} to Medida,
    Cliente{encargo(nombre)} to Encargo,
    Encargo{pago} to Pago,
    Dominio{valorDominio(descripcion)} to ValorDominio,
    ValorDominio{tipoEvento(descripcion)} to Encargo,
    ValorDominio{estado(descripcion)} to Encargo
}

/**relationship OneToOne{
 *Cliente{user} to User{cliente}
 *}
 */


paginate Cliente with infinite-scroll

but when i run the app, i have this error

Migration failed for change set classpath:config/liquibase/changelog/20170313030953_added_entity_Encargo.xml::20170313030953-1::jhipster:
     Reason: liquibase.exception.DatabaseException: Duplicate column name 'valor_dominio_id' [Failed SQL: CREATE TABLE Clothes.encargo (id BIGINT AUTO_INCREMENT NOT NULL, importe_total DOUBLE NULL, fecha_encargo date NULL, fecha_entrega date NULL, detalle_vestido VARCHAR(255) NULL, cliente_id BIGINT NULL, valor_dominio_id BIGINT NULL, valor_dominio_id BIGINT NULL, CONSTRAINT PK_ENCARGO PRIMARY KEY (id))]
    at liquibase.changelog.ChangeSet.execute(ChangeSet.java:619)

and my Entity Encargo is:

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "importe_total")
private Double importeTotal;

@Column(name = "fecha_encargo")
private LocalDate fechaEncargo;

@Column(name = "fecha_entrega")
private LocalDate fechaEntrega;

@Column(name = "detalle_vestido")
private String detalleVestido;

@ManyToOne
private Cliente cliente;

@ManyToOne
private ValorDominio tipoEvento;

@ManyToOne
private ValorDominio estado;

@OneToMany(mappedBy = "encargo")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Pago> pagos = new HashSet<>();

and my changelog is:

<column name="valor_dominio_id" type="bigint" >
     <constraints nullable="true" />
</column>

<column name="valor_dominio_id" type="bigint">
     <constraints nullable="true" />
</column>

the attributes are:

@ManyToOne
private ValorDominio tipoEvento;

@ManyToOne
private ValorDominio estado;

I await your answers.

the error is, that the proper way of mapping 1:n is by giving the many-side the "entity_id" column. Your JDL points a unidirectional relationship from ValorDomino to Encargo , while ValorDomino is the owning side. So consequently Encargo has no view of the referencing entity and so far has no way to distinguish it. This leads to the error you got.

Try to move the relation to an:1 definition:

relationshop ManyToOne {
    Encargo{tipoEventoEncargo} to ValorDominio,
    Encargo{estadoEncargo} to ValorDominio
}

so the join columns to valor domino will be different on encargo

thanks for your answer, im trying your method but not working,

i trying with this and work fine, but now i have to change the get method on view to charge diferent data on diferent selectItems

ValorDominio{tipoEvento(descripcion)} to Encargo{tipoEcargo(descripcion)},
ValorDominio{estado(descripcion)} to Encargo{estado(descripcion)}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM