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