Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA2主密钥与Oracle主密钥_Oracle_Jpa 2.0 - Fatal编程技术网

JPA2主密钥与Oracle主密钥

JPA2主密钥与Oracle主密钥,oracle,jpa-2.0,Oracle,Jpa 2.0,oracle表是否可能有一个复合主键oracle sequenceid+CreateTimstamp,但@Entity类只有@id(sequenceid)主键?我们添加的时间戳是为了表分区的目的,稍后我们将使用这些分区进行清除。在存储实体时,我们将始终添加时间戳值。从数据的角度来看,在这种情况下,id是记录的主键。我可以用主键单独作为id创建实体吗?在这种情况下,您必须在@entity类中创建复合主键。你可以按照下面的例子 @Entity @Table(name="RELEASE_PERSON"

oracle表是否可能有一个复合主键oracle sequenceid+CreateTimstamp,但@Entity类只有@id(sequenceid)主键?我们添加的时间戳是为了表分区的目的,稍后我们将使用这些分区进行清除。在存储实体时,我们将始终添加时间戳值。从数据的角度来看,在这种情况下,id是记录的主键。我可以用主键单独作为id创建实体吗?

在这种情况下,您必须在@entity类中创建复合主键。你可以按照下面的例子

@Entity
@Table(name="RELEASE_PERSON")
@IdClass(ReleasePersonPK.class)
public class ReleasePerson implements Serializable {

@Column(name="ORDER_NO", nullable=false, precision=2)
private Integer orderNo;

@Id
@Column(name="RELEASE_ID", insertable=false,updatable=false)
private long releaseId;

@Id
@Column(name="PERSON_ID", insertable=false,updatable=false)
private long personId;

@ManyToOne
@JoinColumn(name = "PERSON_ID", referencedColumnName = "PERSON_ID")
private Person person;

@ManyToOne
@JoinColumn(name = "RELEASE_ID", referencedColumnName = "ID")
private Release release;
您的Id类将如下所示

@Embeddable
public class ReleasePersonPK implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -6286499269052596345L;

private Person person;

private Release release;
在我的例子中,在ReleasePersone表中,我们将有来自rRelease(ID)和Person(Person_ID)的复合主键


如果您还需要什么,请告诉我。

T他回答是肯定的。正如您所说,id在表中是唯一的,在实体中只将sequenceId作为PK是完全可以的。如果不使用hibernate创建表或更新表的列,则它不关心数据库中的实际内容。

“PriamryKey”?你确定你拼写对了吗?PrimaryKey我的意思是:-)谢谢。我的问题更多的是,我们是否可以在oracle上使用复合键,在jpa@Entity类上使用非复合键。