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