【问题标题】:How to add series of keys on an Entity? Openjpa如何在实体上添加一系列键? Openjpa
【发布时间】:2013-02-18 22:31:41
【问题描述】:

我有一个名为产品的实体。有没有办法添加一系列多个键?就像序列号的钥匙,序列号和型号的钥匙,型号的钥匙等。你怎么能这样做?非常感谢。

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


}

【问题讨论】:

  • 您为什么要这样做,您认为这样做有什么好处?
  • 在 DB2 数据库中。有一种东西叫做逻辑文件。它与桌子相连。在一个表中,您可以有许多逻辑文件。对于表格产品,我可以有一个逻辑文件,其中有一个型号密钥,另一个我可以有一个序列号密钥,另一个我可以有一个型号和序列号的密钥。 link

标签: java db2 jpa-2.0 primary-key openjpa


【解决方案1】:

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

如果您对“Key”有其他含义,请澄清一下,我们可能会进一步讨论。

【讨论】:

  • 我来自一个 DB2 数据库,您可以在一张表上拥有尽可能多的键...一组键。为什么我不被允许?产品中的 Serial_Number 字段在其业务方面也是唯一的。您可以查看我对 Romski 的回答,我还为逻辑文件提供了一个很好的链接。就像我有一个名为 product_id 的主键,但我还有更多的辅助键,如模型等。
  • 序列号可能是合理的,但显然不是“型号”本身。 afaik,逻辑文件类似于其他数据库中的“视图”。只需使用您的示例,您对带有“模型”键的“逻辑文件”有何期望?每个“模型”都会为您提供多种产品,它显然不是“钥匙”。与其问“如何为实体设置多个键”这似乎不合逻辑,不如告诉我们你想要实现什么?无论如何,您不需要将“序列号”作为关键字来查找具有特定序列号的“产品”。
  • 我想要实体有两个 3 键。 1.我已经拥有的product_id。 2. 序列号键,因为序列号键也是唯一的,它可以在文本字段中找到,所以我需要这条记录来使用 find() 进行更新。 3.模型,检索大量记录。 (也许我会为此使用 JPQL)。我对此仍然很陌生,我将它与我以前的技能联系起来。谢谢。
  • 您可以通过序列号/型号/等查询。喜欢:from Product where serialNumber = :someValue 你根本不需要那些“钥匙”来让它工作。
  • 我已经知道了。我不知道在实体中有更多的键集。如果可能的话。
猜你喜欢
  • 2013-11-04
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
相关资源
最近更新 更多