JSF表单中的两个输入字段应该映射到一个实体

JSF表单中的两个输入字段应该映射到一个实体,jsf,jpa,eclipselink,Jsf,Jpa,Eclipselink,我试图根据JSF表单的输入保存一个名为Benchmark的新实体 我不确定如何继续。在Benchmark中有一个名为article的关系属性文章已经在数据库中,但是我需要为新的基准实体添加一个引用,我不想插入该引用。文章有一个名为AID的唯一id,但用户并不知道这一点。用户使用Article字段Art和Supplier识别唯一的Article实体/数据库表行。但我不确定如何使用该输入信息来设置基准实体中的文章字段。通常,我会为testfield设置一个转换器,将字符串值转换为正确的实体类型(就像

我试图根据JSF表单的输入保存一个名为
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?已添加。还添加了文章实体,其中艺术是一个字段。