Java 如何在实体上添加一系列键?Openjpa
我有一个名为product的实体。有没有办法添加一系列多个键?像序列号的钥匙,序列号和型号的钥匙,型号的钥匙等等。你怎么做?多谢各位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
*
* 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
你根本不需要那些“键”来让它工作。我已经知道了。我所不知道的是,在一个实体中有更多的键集。。如果可能的话。