Files
alfresco-community-repo/source/java/org/alfresco/repo/domain/hibernate/Node.hbm.xml
Derek Hulley 44889712c7 Merged V3.0 to HEAD
12331: Fixed ETHREEOH-1033: alf_child_assoc.qname_localname column too short


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12573 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2009-01-06 13:41:53 +00:00

731 lines
24 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
<class
name="org.alfresco.repo.domain.hibernate.StoreImpl"
proxy="org.alfresco.repo.domain.Store"
table="alf_store"
dynamic-update="false"
dynamic-insert="false"
select-before-update="false"
optimistic-lock="version" >
<!-- auto-generated ID -->
<id name="id" column="id" type="long" >
<generator class="native" />
</id>
<!-- Protocol and Identifier must be unique -->
<natural-id mutable="true">
<property name="protocol" column="protocol" type="string" length="50" not-null="true" />
<property name="identifier" column="identifier" type="string" length="100" not-null="true" />
</natural-id>
<!-- Optimistic locking -->
<version column="version" name="version" type="long" />
<!-- forward assoc to root node -->
<many-to-one
name="rootNode"
not-null="true"
foreign-key="fk_alf_store_root"
lazy="proxy"
class="org.alfresco.repo.domain.hibernate.NodeImpl"
fetch="select" >
<column name="root_node_id" />
</many-to-one>
</class>
<class
name="org.alfresco.repo.domain.hibernate.NodeImpl"
proxy="org.alfresco.repo.domain.Node"
table="alf_node"
dynamic-update="false"
dynamic-insert="false"
select-before-update="false"
lazy="true"
optimistic-lock="version" >
<!-- auto-generated ID -->
<id name="id" column="id" type="long" >
<generator class="native" />
</id>
<!-- Store and UUID must be unique -->
<natural-id mutable="true">
<!-- forward assoc to store -->
<many-to-one
name="store"
class="org.alfresco.repo.domain.hibernate.StoreImpl"
column="store_id"
not-null="true"
lazy="false"
foreign-key="fk_alf_node_store"
fetch="join" />
<!-- the store-unique identifier -->
<property name="uuid" column="uuid" type="string" length="36" />
</natural-id>
<!-- Optimistic locking -->
<version column="version" name="version" type="long" />
<!-- forward assoc to Transaction -->
<many-to-one
name="transaction"
class="org.alfresco.repo.domain.hibernate.TransactionImpl"
column="transaction_id"
foreign-key="fk_alf_node_txn"
lazy="proxy"
fetch="select"
unique="false"
not-null="true"
cascade="none" />
<!-- Keep track of the node even once it dies -->
<property name="deleted" column="node_deleted" type="boolean" not-null="true" index="idx_alf_node_del"/>
<!-- Node type QName (mandatory) -->
<property name="typeQNameId" column="type_qname_id" type="long" not-null="true" /> <!-- fk_alf_node_tqn -->
<!-- forward assoc to access control list (optional) -->
<many-to-one
name="accessControlList"
class="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"
column="acl_id"
foreign-key="fk_alf_node_acl"
lazy="false"
fetch="join"
unique="false"
not-null="false"
cascade="none" />
<!-- forward assoc to properties -->
<map
name="properties"
table="alf_node_properties"
lazy="true"
fetch="select"
batch-size="128"
sort="unsorted"
inverse="false"
optimistic-lock="false"
cascade="delete" >
<key column="node_id" foreign-key="fk_alf_nprop_n" not-null="true" />
<composite-map-key class="org.alfresco.repo.domain.PropertyMapKey">
<key-property name="qnameId" column="qname_id" type="long" />
<key-property name="listIndex" column="list_index" type="int" />
<key-property name="localeId" column="locale_id" type="long" />
</composite-map-key>
<composite-element class="org.alfresco.repo.domain.NodePropertyValue" >
<property name="actualType" column="actual_type_n" type="integer" not-null="true" />
<property name="persistedType" column="persisted_type_n" type="integer" not-null="true" />
<property name="booleanValue" column="boolean_value" type="boolean" />
<property name="longValue" column="long_value" type="long" />
<property name="floatValue" column="float_value" type="float" />
<property name="doubleValue" column="double_value" type="double" />
<property name="stringValue" column="string_value" type="string" length="1024"/>
<property name="serializableValue" column="serializable_value" type="serializable" length="16384"/>
</composite-element>
</map>
<!-- forward assoc to aspects -->
<set
name="aspects"
table="alf_node_aspects"
lazy="true"
fetch="select"
batch-size="128"
inverse="false"
sort="unsorted"
optimistic-lock="false"
cascade="delete" >
<key column="node_id" foreign-key="fk_alf_nasp_n" not-null="true" />
<element column="qname_id" type="long" not-null="true" /> <!-- fk_alf_nasp_qn -->
</set>
<!-- cm:auditable properties -->
<component name="auditableProperties" class="org.alfresco.repo.domain.AuditableProperties" optimistic-lock="false">
<property name="auditCreator" column="audit_creator" type="string" length="255" not-null="false"/>
<property name="auditCreated" column="audit_created" type="string" length="30" not-null="false"/>
<property name="auditModifier" column="audit_modifier" type="string" length="255" not-null="false"/>
<property name="auditModified" column="audit_modified" type="string" length="30" not-null="false"/>
<property name="auditAccessed" column="audit_accessed" type="string" length="30" not-null="false"/>
</component>
</class>
<class
name="org.alfresco.repo.domain.hibernate.ChildAssocImpl"
proxy="org.alfresco.repo.domain.ChildAssoc"
dynamic-insert="false"
dynamic-update="false"
lazy="true"
optimistic-lock="version"
table="alf_child_assoc" >
<!-- auto-generated ID -->
<id name="id" column="id" type="long" >
<generator class="native" />
</id>
<natural-id mutable="true">
<!-- forward assoc to parent node -->
<many-to-one
name="parent"
class="org.alfresco.repo.domain.hibernate.NodeImpl"
lazy="proxy"
foreign-key="fk_alf_cass_pnode"
fetch="select"
optimistic-lock="false"
not-null="true" >
<column name="parent_node_id" not-null="true" />
</many-to-one>
<property name="typeQNameId" column="type_qname_id" type="long" not-null="true" /> <!-- fk_alf_cass_tqn -->
<property name="childNodeNameCrc" column="child_node_name_crc" type="long" not-null="true" />
<property name="childNodeName" column="child_node_name" type="string" length="50" not-null="true" />
</natural-id>
<!-- Optimistic locking -->
<version column="version" name="version" type="long" />
<!-- forward assoc to child node -->
<many-to-one
name="child"
lazy="proxy"
foreign-key="fk_alf_cass_cnode"
fetch="select"
class="org.alfresco.repo.domain.hibernate.NodeImpl"
optimistic-lock="false"
not-null="true" >
<column name="child_node_id" not-null="true"/>
</many-to-one>
<property name="qnameNamespaceId" column="qname_ns_id" type="long" not-null="true" /> <!-- fk_alf_cass_qnns -->
<property name="qnameLocalName" column="qname_localname" type="string" length="255" not-null="true" index="idx_alf_cass_qnln" />
<property name="isPrimary" column="is_primary" />
<property name="index" column="assoc_index" />
</class>
<class
name="org.alfresco.repo.domain.hibernate.NodeAssocImpl"
proxy="org.alfresco.repo.domain.NodeAssoc"
table="alf_node_assoc" >
<!-- auto-generated ID -->
<id name="id" column="id" type="long" >
<generator class="native" />
</id>
<natural-id mutable="true">
<!-- forward assoc to source node -->
<many-to-one
name="source"
class="org.alfresco.repo.domain.hibernate.NodeImpl"
optimistic-lock="false"
foreign-key="fk_alf_nass_snode"
lazy="false"
fetch="join"
not-null="true" >
<column name="source_node_id" not-null="true" />
</many-to-one>
<!-- forward assoc to target node -->
<many-to-one
name="target"
class="org.alfresco.repo.domain.hibernate.NodeImpl"
optimistic-lock="false"
foreign-key="fk_alf_nass_tnode"
lazy="false"
fetch="join"
not-null="true" >
<column name="target_node_id" not-null="true" />
</many-to-one>
<property name="typeQNameId" column="type_qname_id" type="long" not-null="true" /> <!-- fk_alf_nass_tqn -->
</natural-id>
<!-- Optimistic locking -->
<version column="version" name="version" type="long" />
</class>
<query name="store.GetStoreByAll">
select
store
from
org.alfresco.repo.domain.hibernate.StoreImpl as store
join store.rootNode
where
store.protocol = :protocol and
store.identifier = :identifier
</query>
<query name="store.GetAllStores">
select
store
from
org.alfresco.repo.domain.hibernate.StoreImpl as store
</query>
<query name="node.GetNodeByStoreIdAndUuid">
select
node,
acl
from
org.alfresco.repo.domain.hibernate.NodeImpl as node
left outer join node.accessControlList as acl
where
node.store.id = :storeId and
node.uuid = :uuid
</query>
<query name="node.GetParentAssocs">
select
assoc,
parent,
child
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
where
child.id = :childId
order by
assoc.index,
assoc.id
</query>
<query name="node.DeleteParentAssocs">
delete
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
where
assoc.child.id = :childId
</query>
<query name="node.DeleteChildAssocs">
delete
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
where
assoc.parent.id = :parentId
</query>
<query name="node.DeleteNodeAssocs">
delete
from
org.alfresco.repo.domain.hibernate.NodeAssocImpl as assoc
where
assoc.source.id = :nodeId or
assoc.target.id = :nodeId
</query>
<query name="node.GetChildNodeIds">
select
child.id
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.child as child
where
assoc.parent.id = :parentId
order by
child.id
</query>
<query name="node.GetChildAssocsByAll">
select
assoc
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
where
assoc.parent.id = :parentId and
assoc.child.id = :childId and
assoc.typeQNameId = :typeQNameId and
assoc.qnameNamespaceId = :qnameNamespaceId and
assoc.qnameLocalName = :qnameLocalName
order by
assoc.index,
assoc.id
</query>
<query name="node.GetChildAssocs">
select
assoc
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
where
assoc.parent.id = :parentId
order by
assoc.index,
assoc.id
</query>
<query name="node.GetChildAssocByTypeAndName">
select
assoc
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
where
assoc.parent.id = :parentId and
assoc.typeQNameId = :typeQNameId and
assoc.childNodeNameCrc = :childNodeNameCrc and
assoc.childNodeName = :childNodeName
order by
assoc.index,
assoc.id
</query>
<query name="node.GetChildAssocRefs">
select
assoc.id,
assoc.typeQNameId,
assoc.qnameNamespaceId,
assoc.qnameLocalName,
assoc.isPrimary,
assoc.index,
child.id,
store.protocol,
store.identifier,
child.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
join child.store as store
where
parent.id = :parentId
order by
assoc.index,
assoc.id
</query>
<query name="node.GetChildAssocRefsByQName">
select
assoc.id,
assoc.typeQNameId,
assoc.qnameNamespaceId,
assoc.qnameLocalName,
assoc.isPrimary,
assoc.index,
child.id,
store.protocol,
store.identifier,
child.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
join child.store as store
where
parent.id = :parentId and
assoc.qnameNamespaceId = :qnameNamespaceId and
assoc.qnameLocalName = :qnameLocalName
order by
assoc.index,
assoc.id
</query>
<query name="node.GetChildAssocRefsByTypeQNames">
select
assoc.id,
assoc.typeQNameId,
assoc.qnameNamespaceId,
assoc.qnameLocalName,
assoc.isPrimary,
assoc.index,
child.id,
store.protocol,
store.identifier,
child.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
join child.store as store
where
parent.id = :parentId and
assoc.typeQNameId in (:childAssocTypeQNameIds)
order by
assoc.index,
assoc.id
</query>
<query name="node.GetChildAssocRefsByTypeQNameAndQName">
select
assoc.id,
assoc.typeQNameId,
assoc.qnameNamespaceId,
assoc.qnameLocalName,
assoc.isPrimary,
assoc.index,
child.id,
store.protocol,
store.identifier,
child.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
join child.store as store
where
parent.id = :parentId and
assoc.typeQNameId = :typeQNameId and
assoc.qnameNamespaceId = :qnameNamespaceId and
assoc.qnameLocalName = :qnameLocalName
order by
assoc.index,
assoc.id
</query>
<query name="node.GetChildAssocRefsByChildTypeQName">
select
assoc.id,
assoc.typeQNameId,
assoc.qnameNamespaceId,
assoc.qnameLocalName,
assoc.isPrimary,
assoc.index,
child.id,
store.protocol,
store.identifier,
child.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
join child.store as store
where
parent.id = :parentId and
child.typeQNameId in (:childTypeQNameIds)
order by
assoc.index,
assoc.id
</query>
<query name="node.GetPrimaryChildAssocs">
select
assoc.id,
assoc.typeQNameId,
assoc.qnameNamespaceId,
assoc.qnameLocalName,
assoc.isPrimary,
assoc.index,
child.id,
store.protocol,
store.identifier,
child.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
join child.store as store
where
assoc.parent.id = :parentId and
assoc.isPrimary = true
order by
assoc.index,
assoc.id
</query>
<query name="node.GetPrimaryChildAssocsNotInSameStore">
select
assoc.id,
assoc.typeQNameId,
assoc.qnameNamespaceId,
assoc.qnameLocalName,
assoc.isPrimary,
assoc.index,
child.id,
store.protocol,
store.identifier,
child.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join assoc.child as child
join child.store as store
where
assoc.parent.id = :parentId and
assoc.isPrimary = true and
child.store.id != parent.store.id
order by
assoc.index,
assoc.id
</query>
<query name="node.GetNodesWithChildrenInDifferentStore">
select
parent.id,
parentStore.protocol,
parentStore.identifier,
parent.uuid
from
org.alfresco.repo.domain.hibernate.ChildAssocImpl as assoc
join assoc.parent as parent
join parent.store as parentStore
join assoc.child as child
join child.store as childStore
where
parentStore.id = :parentStoreId and
childStore.id != :parentStoreId and
parent.id > :minNodeId and
assoc.isPrimary = true
order by
parent.id
</query>
<query name="node.GetNodesWithAspect">
select
node.id,
node.store.protocol,
node.store.identifier,
node.uuid
from
org.alfresco.repo.domain.hibernate.NodeImpl as node
join node.aspects as aspects
where
node.id > :minNodeId and
aspects.id = :aspectQNameId
order by
node.id
</query>
<query name="node.GetNodeAssoc">
select
assoc
from
org.alfresco.repo.domain.hibernate.NodeAssocImpl as assoc
where
assoc.source.id = :sourceId and
assoc.target.id = :targetId and
assoc.typeQNameId = :assocTypeQNameId
</query>
<query name="node.GetNodeAssocsToAndFrom">
select
assoc
from
org.alfresco.repo.domain.hibernate.NodeAssocImpl as assoc
where
assoc.source.id = :nodeId or
assoc.target.id = :nodeId
</query>
<query name="node.GetTargetAssocs">
select
assoc
from
org.alfresco.repo.domain.hibernate.NodeAssocImpl as assoc
join assoc.source as source
join assoc.target as target
where
assoc.source.id = :sourceId
</query>
<query name="node.GetSourceAssocs">
select
assoc
from
org.alfresco.repo.domain.hibernate.NodeAssocImpl as assoc
join assoc.source as source
join assoc.target as target
where
assoc.target.id = :targetId
</query>
<sql-query name="node.GetNodesWithPropertyValuesByStringAndStore">
<return alias="n" class="org.alfresco.repo.domain.hibernate.NodeImpl"/>
SELECT
{n.*}
FROM
alf_node n
JOIN alf_store s on s.id = n.store_id
JOIN alf_node_properties p ON n.id = p.node_id
WHERE
s.protocol = :storeProtocol AND
s.identifier = :storeIdentifier AND
p.qname_id = :propQNameID AND
p.string_value = :propStringValue
</sql-query>
<sql-query name="node.GetContentUrlsForStore">
<return-scalar column="owner" type="string"/>
<return-scalar column="creator" type="string"/>
<return-scalar column="contenturl" type="string"/>
SELECT
p1.string_value AS owner,
n.audit_creator AS creator,
p2.string_value AS contenturl
FROM
alf_node n
JOIN alf_store s ON (s.id = n.store_id AND n.type_qname_id = :contentTypeQNameID)
LEFT JOIN alf_node_properties p1 ON (p1.node_id = n.id AND p1.qname_id = :ownerPropQNameID)
JOIN alf_node_properties p2 ON (p2.node_id = n.id AND p2.qname_id = :contentPropQNameID)
WHERE
s.protocol = :storeProtocol AND
s.identifier = :storeIdentifier AND
(p1.string_value != 'System' OR (p1.string_value IS NULL AND n.audit_creator != 'System'))
</sql-query>
<sql-query name="node.GetUsersWithoutUsage">
<return-scalar column="username" type="string"/>
<return-scalar column="uuid" type="string"/>
SELECT
p1.string_value AS username,
n.uuid AS uuid
FROM
alf_node n
JOIN alf_store s ON (s.id = n.store_id AND n.type_qname_id = :personTypeQNameID)
JOIN alf_node_properties p1 ON (p1.node_id = n.id AND p1.qname_id = :usernamePropQNameID)
LEFT JOIN alf_node_properties p2 ON (p2.node_id = n.id AND p2.qname_id = :sizeCurrentPropQNameID)
WHERE
s.protocol = :storeProtocol AND
s.identifier = :storeIdentifier AND
(p2.persisted_type_n IS NULL OR p2.persisted_type_n = 0) AND
p1.string_value != 'System'
</sql-query>
<sql-query name="node.GetUsersWithUsage">
<return-scalar column="username" type="string"/>
<return-scalar column="uuid" type="string"/>
SELECT
p1.string_value AS username,
n.uuid AS uuid
FROM
alf_node n
JOIN alf_store s ON (s.id = n.store_id AND n.type_qname_id = :personTypeQNameID)
JOIN alf_node_properties p1 ON (p1.node_id = n.id AND p1.qname_id = :usernamePropQNameID)
LEFT JOIN alf_node_properties p2 ON (p2.node_id = n.id AND p2.qname_id = :sizeCurrentPropQNameID)
WHERE
s.protocol = :storeProtocol AND
s.identifier = :storeIdentifier AND
(p2.persisted_type_n != 0 AND p2.persisted_type_n IS NOT NULL) AND
p1.string_value != 'System'
</sql-query>
<query name="node.GetNodesWithPropertyValuesByActualType">
select
node
from
org.alfresco.repo.domain.hibernate.NodeImpl as node
join
node.properties prop
where
(
prop.actualType = :actualType or
prop.actualType = 9
) and
prop.persistedType != 0
</query>
<query name="node.patch.GetNodesWithPersistedSerializableProperties">
select distinct
node
from
org.alfresco.repo.domain.hibernate.NodeImpl as node
join node.properties as props
where
props.serializableValue is not null
</query>
<query name="node.GetDeletedNodesByMaxTxnId">
<![CDATA[
select
node.id,
node.store.protocol,
node.store.identifier,
node.uuid
from
org.alfresco.repo.domain.hibernate.NodeImpl as node
join node.transaction as txn
where
node.id >= :minNodeId and
node.deleted = true and
txn.id <= :maxTxnId
order by
node.id asc
]]>
</query>
</hibernate-mapping>