2013-02-18 60 views
0

我有這個實體命名產品。有沒有辦法添加一系列多個鍵?像序列號的關鍵字,序列號和模型的關鍵字,模型的關鍵字等。您如何做到這一點?非常感謝你。如何在實體上添加一系列密鑰? Openjpa

* 
* 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; 
    } 


} 
+0

爲什麼你想這樣做,你認爲什麼是好處? – Romski 2013-02-19 02:42:21

+0

在DB2數據庫中。有一個叫做邏輯文件的東西。它連接到桌子上。在一張表中你可以有許多邏輯文件。對於表格產品,我可以有一個邏輯文件,它有一個模型密鑰,另一個我可以有一個序列號的密鑰,另一個模型和序列號的密鑰。 [link](http://stackoverflow.com/questions/7045254/as-400-db2-logical-file-vs-table-index) – user1917456 2013-02-19 20:19:59

回答

0

我相信你要找的東西根本不正確。密鑰應該是實體實例的唯一標識符。在你的例子中,你想要一個「模型」的關鍵,它聽起來不正確。

如果您對「鑰匙」有其他要求,請澄清,我們可能會進一步討論。

+0

我來自DB2數據庫,您可以在一個表上擁有多個鍵。 ..套鑰匙。爲什麼我不被允許?產品中的Serial_Number字段在其業務方面也是獨一無二的。你可以查看我對Romski的回答,我也爲邏輯文件提供了一個很好的鏈接。這就像我有一個名爲product_id的主鍵,但我仍然有更多的二級鍵,如模型等 – user1917456 2013-02-19 20:23:28

+0

對於序列號這可能是合理的,但它顯然不是「模型」本身。 afaik,邏輯文件與其他數據庫中的「查看」類似。只要使用你的例子,你對「模型」鍵的「邏輯文件」有什麼期待?每個「模型」都會給你多種產品,顯然不是「鑰匙」。而不是要求「如何有多個關鍵的實體」這似乎不符合邏輯,你能告訴我們你想達到什麼?無需將「serialNumber」作爲密鑰,無論如何您都可以通過某個serialNumber找到「產品」。 – 2013-02-20 01:14:43

+0

我想要有兩個3鍵的實體。 1.我已經有了product_id。 2.序列號碼,因爲序列號碼也是唯一的,它可以在文本框中找到,所以我需要這個記錄來使用find()進行更新。 3.模型,檢索大量記錄。 (也許我只會使用JPQL)。我仍然對此感到陌生,並且將它與之前的技巧聯繫在一起。謝謝。 – user1917456 2013-02-20 19:22:33