JSF表单中的两个输入字段应该映射到一个实体
我试图根据JSF表单的输入保存一个名为JSF表单中的两个输入字段应该映射到一个实体,jsf,jpa,eclipselink,Jsf,Jpa,Eclipselink,我试图根据JSF表单的输入保存一个名为Benchmark的新实体 我不确定如何继续。在Benchmark中有一个名为article的关系属性文章已经在数据库中,但是我需要为新的基准实体添加一个引用,我不想插入该引用。文章有一个名为AID的唯一id,但用户并不知道这一点。用户使用Article字段Art和Supplier识别唯一的Article实体/数据库表行。但我不确定如何使用该输入信息来设置基准实体中的文章字段。通常,我会为testfield设置一个转换器,将字符串值转换为正确的实体类型(就像
Benchmark
的新实体
我不确定如何继续。在Benchmark
中有一个名为article
的关系属性<代码>文章已经在数据库中,但是我需要为新的基准
实体添加一个引用,我不想插入该引用。文章
有一个名为AID
的唯一id,但用户并不知道这一点。用户使用Article
字段Art
和Supplier
识别唯一的Article
实体/数据库表行。但我不确定如何使用该输入信息来设置基准
实体中的文章
字段。通常,我会为testfield设置一个转换器,将字符串值转换为正确的实体类型(就像我为Antigen/target所做的那样),但我看不出在这里该如何做,因为这里有两个输入字段
有关于如何进行的建议/提示吗
这是(大致)我的基准
实体:
@Entity
@NamedQueries({
@NamedQuery(name = "Benchmark.findAll", query = "SELECT b FROM Benchmark b"),
@NamedQuery(name = "Benchmark.countTotal", query = "SELECT COUNT(b) FROM Benchmark b")})
public class Benchmark implements Serializable {
private static final long serialVersionUID = 1L;
public static final String ALL = "Benchmark.findAll";
public static final String COUNT = "Benchmark.countTotal";
@Id
private Integer ID;
@Column(name="ba_type")
private String type;
@JoinColumn(name = "target", referencedColumnName = "PID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private MuxProtein target;
@JoinColumn(name = "benchmark_assay", referencedColumnName = "AID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Article article;
@JoinColumn(name = "sample_type", referencedColumnName = "ID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private SampleType sampleType;
@JoinColumn(name = "target", insertable=false, updatable=false,referencedColumnName = "PID")
@ManyToOne(optional = true)
private MuxProtein proteinPID;
...
}
@Entity
public class Supplier implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "SID")
private Short sid;
@Basic(optional = false)
@Column(name = "Supplier")
private String supplier;
@OneToMany(cascade = {CascadeType.MERGE,CascadeType.REMOVE,CascadeType.REFRESH}, mappedBy = "supplierSID")
private List<Article> articleList;
...
}
@Entity(name="MuxArticle")
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "AID")
private Integer aid;
@Basic(optional = false)
@Column(name = "Art")
private String art;
@Column(name = "Price")
private String price;
@JoinColumn(name = "supplier_SID", referencedColumnName = "SID")
@ManyToOne(optional = false)
private Supplier supplierSID;
...
}
以下是表格:
<h:form id="addDilForm">
<p:panelGrid >
<f:facet name="header" >
<p:row><p:column colspan="2">New benchmark</p:column></p:row>
</f:facet>
<p:row>
<p:column colspan="1">
<h:outputLabel>Sample</h:outputLabel>
</p:column>
<p:column>
<p:selectOneMenu value="#{benchController.benchy.sampleType}" converter="SampleTypeConverter">
<f:selectItems value="#{SampleTypeController.samples}" var="samp" itemLabel="#{samp.name}" itemValue="#{samp}" />
</p:selectOneMenu>
</p:column>
</p:row>
<p:row>
<p:column colspan="1">
<h:outputLabel>Antigen</h:outputLabel>
</p:column>
<p:column >
<p:inputText value="#{benchController.benchy.target}" converter="MuxProteinConverter" />
</p:column>
</p:row>
<p:row>
<p:column rowspan="2">
<h:outputLabel>Benchmark assay</h:outputLabel>
</p:column>
<p:column>
<h:outputLabel value="Articlenumber " /><p:inputText />
</p:column>
</p:row>
<p:row>
<p:column><h:outputLabel value="Supplier " /><p:selectOneMenu ><f:selectItems value="#{supplier.suppliers}" var="supp" itemLabel="#{supp.supplier}" /></p:selectOneMenu></p:column>
</p:row>
<f:facet name="footer">
<p:row>
<p:column colspan="2">
<h:commandButton value="Save" action="#{dilution.save()}" />
</p:column>
</p:row>
</f:facet>
</p:panelGrid>
</h:form>
和我的文章
实体:
@Entity
@NamedQueries({
@NamedQuery(name = "Benchmark.findAll", query = "SELECT b FROM Benchmark b"),
@NamedQuery(name = "Benchmark.countTotal", query = "SELECT COUNT(b) FROM Benchmark b")})
public class Benchmark implements Serializable {
private static final long serialVersionUID = 1L;
public static final String ALL = "Benchmark.findAll";
public static final String COUNT = "Benchmark.countTotal";
@Id
private Integer ID;
@Column(name="ba_type")
private String type;
@JoinColumn(name = "target", referencedColumnName = "PID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private MuxProtein target;
@JoinColumn(name = "benchmark_assay", referencedColumnName = "AID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Article article;
@JoinColumn(name = "sample_type", referencedColumnName = "ID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private SampleType sampleType;
@JoinColumn(name = "target", insertable=false, updatable=false,referencedColumnName = "PID")
@ManyToOne(optional = true)
private MuxProtein proteinPID;
...
}
@Entity
public class Supplier implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "SID")
private Short sid;
@Basic(optional = false)
@Column(name = "Supplier")
private String supplier;
@OneToMany(cascade = {CascadeType.MERGE,CascadeType.REMOVE,CascadeType.REFRESH}, mappedBy = "supplierSID")
private List<Article> articleList;
...
}
@Entity(name="MuxArticle")
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "AID")
private Integer aid;
@Basic(optional = false)
@Column(name = "Art")
private String art;
@Column(name = "Price")
private String price;
@JoinColumn(name = "supplier_SID", referencedColumnName = "SID")
@ManyToOne(optional = false)
private Supplier supplierSID;
...
}
请添加供应商实体Where is/what'sárt?已添加。还添加了文章实体,其中艺术是一个字段。