0

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

4

2 回答 2

0

答案是肯定的。正如您所说,id 在表中将是唯一的,只需将 sequenceId 作为 PK 放在实体中就可以了。如果您不使用休眠来创建表或更新表的列,它并不关心数据库中的实际内容。

于 2013-03-08T09:01:53.637 回答
0

在这种情况下,您必须在 @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 Class 将如下所示

@Embeddable
public class ReleasePersonPK implements Serializable {

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

private Person person;

private Release release;

在我在 ReleasePerson 表中的示例中,我们将拥有来自 rRelease(ID) 和 Person (Person_id) 的复合主键。

需要帮助请叫我。

于 2013-03-08T08:54:55.640 回答