Как сделать поля @id редактируемыми в forge crud?
Я хочу сгенерировать crud для сущности с редактируемым первичным ключом, но forge не генерирует поле @id. Это мое замечание о том, что поле id - это строка, а не поле идентификатора с автоматическим приращением.
package com.samples.model;
// Generated 14/01/2013 11:23:23 AM by Hibernate Tools 3.4.0.CR1
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Pais generated by hbm2java
*/
@Entity
@Table(name = "pais", schema = "public")
public class Pais implements java.io.Serializable
{
/**
*
*/
private static final long serialVersionUID = -8369022633869576848L;
private String paisId;
private Date fechaRegistro;
private String descripcion;
private short estatus;
private Set<Estado> estados = new HashSet<Estado>(0);
public Pais()
{
}
public Pais(String paisId, Date fechaRegistro, short estatus)
{
this.paisId = paisId;
this.fechaRegistro = fechaRegistro;
this.estatus = estatus;
}
public Pais(String paisId, Date fechaRegistro, String descripcion, short estatus, Set<Estado> estados)
{
this.paisId = paisId;
this.fechaRegistro = fechaRegistro;
this.descripcion = descripcion;
this.estatus = estatus;
this.estados = estados;
}
@Id
@Column(name = "pais_id", unique = true, nullable = false, length = 5)
public String getPaisId()
{
return this.paisId;
}
public void setPaisId(String paisId)
{
this.paisId = paisId;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "fecha_registro", nullable = false, length = 29)
public Date getFechaRegistro()
{
return this.fechaRegistro;
}
public void setFechaRegistro(Date fechaRegistro)
{
this.fechaRegistro = fechaRegistro;
}
@Column(name = "descripcion", length = 30)
public String getDescripcion()
{
return this.descripcion;
}
public void setDescripcion(String descripcion)
{
this.descripcion = descripcion;
}
@Column(name = "estatus", nullable = false)
public short getEstatus()
{
return this.estatus;
}
public void setEstatus(short estatus)
{
this.estatus = estatus;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pais")
public Set<Estado> getEstados()
{
return this.estados;
}
public void setEstados(Set<Estado> estados)
{
this.estados = estados;
}
}
1 ответ
JBoss Forge использует Metawidget для генерации пользовательского интерфейса. Таким образом, для этого вы должны изменить конфигурационный файл Forge metawidget.xml.
Forge фактически имеет 3 файла конфигурации Metawidget: metawidget-entity.xml для просмотра / редактирования экранов, metawidget-search.xml для поисковых фильтров и metawidget-qbe.xml для генерации кода Java.
Для ваших целей вам нужно изменить metawidget-entity.xml. В частности, вы должны найти запись JpaInspector...
<jpaInspector xmlns="java:org.metawidget.inspector.jpa" config="JpaInspectorConfig">
... и добавить дочерний узел...
<hideIds><boolean>false</boolean></hideIds>
Этот бит должен быть простым. Однако на самом деле возвращение вашего измененного metawidget-entity.xml обратно в Forge неуклюже. На данный момент самый простой способ - это распаковать и изменить сам файл forge-scaffold-faces.jar. Надеюсь, это будет сделано чище в будущем выпуске Forge.