尝试在foreignKey字段中设置默认值时出现问题。 我想在表区域中注册一个区域,用户将输入的唯一值是描述,生成id。 初始化页面时,我希望默认情况下设置实体区域“areaTotal”和“propId”的属性值,areaTotal我想要为false而propId我想成为我通过id搜索的值。 attrib“areaTotal”是boolean,我可以设置它,但propId类型是“Propriedade”(另一个实体),我必须将它的id保存在数据库中。我怎么能这样做?
视图:
//I am setting the values in this method "obterPropriedade".
<f:metadata>
<f:event listener="#{gadoBean.obterPropriedade}"
type="preRenderView" />
</f:metadata>
<p:outputLabel value="Descrição" for="descricao" />
<p:inputText id="descricao" size="10" maxlength="80"
value="#{gadoBean.area.areaDescricao}" required="true"
requiredMessage="Por favor, informe a descricao da area"
validatorMessage="formato de tipo inválido">
<f:validateRegex pattern="^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$"/>
</p:inputText>
<p:commandButton action="#{gadoBean.salvarArea}" value="salvar area" update=":mapa,:growl,:panelMap"/>
Area.java(模型)
package com.sisRastrbov.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@SequenceGenerator(name ="area_sequence", sequenceName = "area_sequence")
@Table(name = "area")
public class Area implements Serializable {
private static final long serialVersionUID = 1L;
private Long areaId;
private String areaDescricao;
private Propriedade propId;
private boolean areaTotal;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "area_sequence")
@Column(name = "area_id")
public Long getAreaId() {
return areaId;
}
public void setAreaId(Long areaId) {
this.areaId = areaId;
}
@Column(name = "area_descricao")
public String getAreaDescricao() {
return areaDescricao;
}
public void setAreaDescricao(String areaDescricao) {
this.areaDescricao = areaDescricao;
}
@ManyToOne
@JoinColumn(name = "propi_id", nullable = false)
public Propriedade getPropId() {
return propId;
}
public void setPropId(Propriedade propId) {
this.propId = propId;
}
@Column(name = "area_total")
public boolean isAreaTotal() {
return areaTotal;
}
public void setAreaTotal(boolean areaTotal) {
this.areaTotal = areaTotal;
}
}
我的托管豆:
private static final long serialVersionUID = 1L;
private MapModel mapa;
private Circle circulo = null;
private Tag tag;
private float lastLat, lastLong;
private Coordenadas coordenadas;
private Coordenadas cooPorId;
private Propriedade propriedade;
private Tag tagId;
private List<Cerca> cerca;
private List<Coordenadas> cooPorPro;
private List<Area> listArea;
private List<Coordenadas> posicoes;
private List<Tag> tagsCadastradas;
private List<Coordenadas> ultimasPosicoes;
private List<Propriedade> listPropriedades;
private Gado gado;
private Area area = new Area();
private Cerca cerca1;
private CoordFilter filtro;
private List<Gado> gadosFiltrados;
private String center;
private LatLng coord;
private GadoBeanM gadoBeanM = new GadoBeanM();
private Long prop;
private Long usuarioLogado;
private Long id;
private String idGado;
private Seguranca seguranca;
private double lat;
private double lng;
int cont = 0;
double[] lati = new double[1000];
double[] longi = new double[1000];
LatLng coordi;
private Polyline polyl = new Polyline();
private Marker marcador;
private double[] lats;
private double[] longs;
//other methods.
public void salvarArea() {
if (cont < 3) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("A area deve ter pelo menos três pontos!"));
} else {
System.out.println("area: "+this.area);
//here is the method I save, everything normal.
this.area = areasRep.salvarArea(this.area);
cont = 0;
lati = null;
longi = null;
coordi = null;
polyl = new Polyline();
marcador = null;
}
limpar();
}
//Method called before page is loaded.
public void obterPropriedade() {
this.area = new Area();
if(!isEditandoArea()){
this.propriedade = propriedadesRep.porId(prop);//here I get the propriedade by id.
this.area.setAreaTotal(false);//here I set areaTotal.
this.area.setPropId(propriedade.getId());//Here is my PROBLEM!!!
//how do I set this field with the id, if the type is an Entity?
System.out.println("prop por id: "+this.propriedade);
System.out.println("area: "+this.area);
System.out.println("prop por id: "+this.area.isAreaTotal());
}
mapa = new DefaultMapModel();
//other code.