package org.zstack.storage.primary.local; import org.zstack.header.host.HostEO; import org.zstack.header.storage.primary.PrimaryStorageEO; import org.zstack.header.storage.snapshot.VolumeSnapshotVO; import org.zstack.header.vo.ForeignKey; import org.zstack.header.vo.ForeignKey.ReferenceOption; import org.zstack.header.vo.SoftDeletionCascade; import org.zstack.header.vo.SoftDeletionCascades; import org.zstack.header.volume.VolumeVO; import javax.persistence.*; import java.sql.Timestamp; /** * Created by frank on 7/1/2015. */ @Entity @Table @IdClass(CompositePrimaryKeyForLocalStorageResourceRefVO.class) @SoftDeletionCascades({ @SoftDeletionCascade(parent = VolumeVO.class, joinColumn = "resourceUuid"), @SoftDeletionCascade(parent = VolumeSnapshotVO.class, joinColumn = "resourceUuid") }) public class LocalStorageResourceRefVO { @Column @Id private String resourceUuid; @Column @Id @ForeignKey(parentEntityClass = PrimaryStorageEO.class, onDeleteAction = ReferenceOption.CASCADE) private String primaryStorageUuid; // @ForeignKey(parentEntityClass = HostEO.class, onDeleteAction = ReferenceOption.CASCADE) // Do not cascade delete LocalStorageResourceRefVO when delete HostEO, If the cascade delete is opened, the ImageVO/VolumeVO/VolumeSnapshotVO/ImageCacheVO data will not be cleaned when delete HostEO. @Column @Id private String hostUuid; @Column private long size; @Column private String resourceType; @Column private Timestamp createDate; @Column private Timestamp lastOpDate; @PreUpdate private void preUpdate() { lastOpDate = null; } public long getSize() { return size; } public void setSize(long size) { this.size = size; } public String getPrimaryStorageUuid() { return primaryStorageUuid; } public void setPrimaryStorageUuid(String primaryStorageUuid) { this.primaryStorageUuid = primaryStorageUuid; } public String getResourceUuid() { return resourceUuid; } public void setResourceUuid(String resourceUuid) { this.resourceUuid = resourceUuid; } public String getResourceType() { return resourceType; } public void setResourceType(String resourceType) { this.resourceType = resourceType; } public Timestamp getCreateDate() { return createDate; } public void setCreateDate(Timestamp createDate) { this.createDate = createDate; } public Timestamp getLastOpDate() { return lastOpDate; } public void setLastOpDate(Timestamp lastOpDate) { this.lastOpDate = lastOpDate; } public String getHostUuid() { return hostUuid; } public void setHostUuid(String hostUuid) { this.hostUuid = hostUuid; } }