Java 如何在实体上添加一系列键?Openjpa

Java 如何在实体上添加一系列键?Openjpa,java,db2,jpa-2.0,primary-key,openjpa,Java,Db2,Jpa 2.0,Primary Key,Openjpa,我有一个名为product的实体。有没有办法添加一系列多个键?像序列号的钥匙,序列号和型号的钥匙,型号的钥匙等等。你怎么做?多谢各位 * * To change this template, choose Tools | Templates * and open the template in the editor. */ package lotmovement.business.entity; import java.io.Serializable; import java.sql.T

我有一个名为product的实体。有没有办法添加一系列多个键?像序列号的钥匙,序列号和型号的钥匙,型号的钥匙等等。你怎么做?多谢各位

*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lotmovement.business.entity;

import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Version;

/**
 *
 * @author god-gavedmework
 */
@Entity
public class Product implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long product_Id;

    @Column(name = "SERIAL_NUMBER", nullable = false,length = 30)
    private String serial_Number;

    @Column(name = "DATE_ASSEMBLED", nullable = false,length = 10)
    private String date_Assembled;

    @Column(name = "TIME_ASSEMBLED", nullable = false,length = 20)
    private String time_Assembled;

    @Column(name = "MODEL", nullable = false,length = 20)
    private String model;

    @Column(name = "BATCH_ID", nullable = false,length = 6)
    private int batch_Id;

    @Column(name = "PROCESS_CODE", nullable = false,length = 3)
    private int process_Code;

    @Column(name = "DC_POWER_PCB_SERIAL", nullable = false,length = 20)
    private String dc_Power_PCB_Serial;

    @Column(name = "CONTROL_PWER_PCB_SERIAL", nullable = false,length = 20)
    private String control_Power_PCB_Serial;

    @Column(name = "MAINS_POWER_PCB_SERIAL", nullable = false,length = 20)
    private String mains_Power_PCB_Serial;

    @Column(name = "BLOWER_SERIAL", nullable = false,length = 20)
    private String blower_Serial;

    @Column(name = "HEATERPLATE_SERIAL", nullable = false,length = 20)
    private String heaterPlate_Serial;

    @Column(name = "LAST_PROCESS", nullable = false,length = 3)
    private String last_Process;

    @Column(name = "LAST_DATE", nullable = false,length = 20)
    private String last_Date;

     @Version
    @Column(name = "LAST_UPDATED_TIME")
    private java.sql.Timestamp updatedTime;

    public Timestamp getUpdatedTime() {
        return updatedTime;
    }

    public void setUpdatedTime(Timestamp updatedTime) {
        this.updatedTime = updatedTime;
    }


    public Long getProduct_Id() {
        return product_Id;
    }

    public void setProduct_Id(Long product_Id) {
        this.product_Id = product_Id;
    }

    public String getSerial_Number() {
        return serial_Number;
    }

    public void setSerial_Number(String serial_Number) {
        this.serial_Number = serial_Number;
    }

    public String getDate_Assembled() {
        return date_Assembled;
    }

    public void setDate_Assembled(String date_Assembled) {
        this.date_Assembled = date_Assembled;
    }

    public String getTime_Assembled() {
        return time_Assembled;
    }

    public void setTime_Assembled(String time_Assembled) {
        this.time_Assembled = time_Assembled;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public int getBatch_Id() {
        return batch_Id;
    }

    public void setBatch_Id(int batch_Id) {
        this.batch_Id = batch_Id;
    }

    public int getProcess_Code() {
        return process_Code;
    }

    public void setProcess_Code(int process_Code) {
        this.process_Code = process_Code;
    }

    public String getDc_Power_PCB_Serial() {
        return dc_Power_PCB_Serial;
    }

    public void setDc_Power_PCB_Serial(String dc_Power_PCB_Serial) {
        this.dc_Power_PCB_Serial = dc_Power_PCB_Serial;
    }

    public String getControl_Power_PCB_Serial() {
        return control_Power_PCB_Serial;
    }

    public void setControl_Power_PCB_Serial(String control_Power_PCB_Serial) {
        this.control_Power_PCB_Serial = control_Power_PCB_Serial;
    }

    public String getMains_Power_PCB_Serial() {
        return mains_Power_PCB_Serial;
    }

    public void setMains_Power_PCB_Serial(String mains_Power_PCB_Serial) {
        this.mains_Power_PCB_Serial = mains_Power_PCB_Serial;
    }

    public String getBlower_Serial() {
        return blower_Serial;
    }

    public void setBlower_Serial(String blower_Serial) {
        this.blower_Serial = blower_Serial;
    }

    public String getHeaterPlate_Serial() {
        return heaterPlate_Serial;
    }

    public void setHeaterPlate_Serial(String heaterPlate_Serial) {
        this.heaterPlate_Serial = heaterPlate_Serial;
    }

    public String getLast_Process() {
        return last_Process;
    }

    public void setLast_Process(String last_Process) {
        this.last_Process = last_Process;
    }

    public String getLast_Date() {
        return last_Date;
    }

    public void setLast_Date(String last_Date) {
        this.last_Date = last_Date;
    }


}

我相信你所寻找的根本不正确。键应该是实体实例的唯一标识符。在您的示例中,您希望为“Model”设置一个键,但这听起来并不正确


如果“Key”是指其他内容,请澄清,我们可以进一步讨论。

为什么要这样做,以及您认为DB2数据库中的好处是什么。有一种东西叫做逻辑文件。它与桌子相连。在一个表中,可以有许多逻辑文件。对于表产品,我可以有一个逻辑文件,其中有一个用于型号的键,另一个用于序列号,另一个用于型号和序列号。我来自一个DB2数据库,一个表上可以有任意多个键。。。一套钥匙。为什么我不被允许?产品中的序列号字段在it的业务方面也是唯一的。你可以查看我的答案,我还提供了一个很好的逻辑文件链接。这就像我有一个名为product_id的主键,但我还有更多的次键,如model等。对于序列号,这可能是合理的,但显然不是针对“model”本身。另外,逻辑文件类似于其他数据库中的“视图”。以您的示例为例,对于键为“model”的“逻辑文件”,您期望得到什么?每个“模型”都会给你提供多种产品,而它显然不是一把“钥匙”。不要问“如何为实体拥有多个键”,这似乎不符合逻辑,你能告诉我们你想要实现什么吗?您不需要将“serialNumber”作为键来查找具有特定serialNumber的“产品”。我希望实体有两个3键。1.我已经拥有的产品id。2.序列号键,因为序列号键也是唯一的,它在文本字段中找到,所以我需要这个记录来使用find()进行更新。3.该模型用于检索大量记录。(也许我会使用JPQL来实现这一点)。我对这一点还是新手,我正在将其与我以前的技能联系起来。谢谢。您可以通过查询按序列号/型号等进行查询。比如:
from Product where serialNumber=:someValue
你根本不需要那些“键”来让它工作。我已经知道了。我所不知道的是,在一个实体中有更多的键集。。如果可能的话。