<?xml version="1.0"?>
<!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.wamblee.security.authorization.AuthorizationService" table="AUTHORIZATION_SERVICE" 
               select-before-update="true">
            <id name="primaryKey" column="ID" type="long">
                <generator class="native"/>
            </id>
            <discriminator column="TYPE" type="string"/>
            <version name="persistedVersion" column="VERSION"/>
            
            <subclass name="org.wamblee.security.authorization.DefaultAuthorizationService"
                discriminator-value="DEFAULT">
                
                <property name="name" column="NAME"/>
               
                <list name="mappedRules" table="AUTHORIZATION_SERVICE_RULES" lazy="false" cascade="all-delete-orphan">
                    <key column="ID"/>
                    <index column="POSITION"/>
                    <many-to-many class="org.wamblee.security.authorization.AuthorizationRule"
                       column="RULE_ID"/>
                </list>
            </subclass>
            
        </class>
        
        <query name="findAuthorizationServiceByName">
            select service
            from org.wamblee.security.authorization.AuthorizationService service
            where service.name = :name 
        </query>
        
    </hibernate-mapping>