^1646022025540
@
sname
hibernate-mapping
slabel
hibernate-mapping
sdescriptors
xworker.lang.MetaDescriptor3
smany
true
seditCols
2
sinitialization
false
sdescription
这个元素包括一些可选的属性。schema和catalog属性， 指明了这个映射所连接（refer）的表所在的schema和/或catalog名称。 假若指定了这个属性，表名会加上所指定的schema和catalog的名字扩展为全限定名。假若没有指定，表名就不会使用全限定名。 default-cascade指定了未明确注明cascade属性的Java属性和 集合类Hibernate会采取什么样的默认级联风格。auto-import属性默认让我们在查询语言中可以使用 非全限定名的类名。<br /><br />假若你有两个持久化类，它们的非全限定名是一样的（就是两个类的名字一样，所在的包不一样--译者注）， 你应该设置auto-import=&quot;false&quot;。假若说你把一个&ldquo;import过&rdquo;的名字同时对应两个类， Hibernate会抛出一个异常。 <br /><br />注意hibernate-mapping 元素允许你嵌套多个如上所示的 <class></class>映射。但是最好的做法（也许一些工具需要的）是一个 持久化类（或一个类的继承层次）对应一个映射文件，并以持久化的超类名称命名，例如： Cat.hbm.xml， Dog.hbm.xml，或者如果使用继承，Animal.hbm.xml。
  @/@package
  sname
  package
  slabel
  package
  ssize
  40
  scolspan
  2
  sdescription
  指定一个包前缀，如果在映射文档中没有指定全限定的类名， 就使用这个作为包名。
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  package
  @/@catalog
  sname
  catalog
  slabel
  catalog
  sdescription
  数据库catalog的名称。
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  catalog
  @/@default-cascade
  sname
  default-cascade
  slabel
  default-cascade
  sdefault
  none
  sdescription
  默认的级联风格
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  default-cascade
  @/@schema
  sname
  schema
  slabel
  schema
  sdescription
  数据库schema的名称。
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  schema
  @/@default-access
  sname
  default-access
  slabel
  default-access
  sdefault
  property
  sdescription
  Hibernate用来访问属性的策略。可以通过实现PropertyAccessor接口自定义。
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  default-access
  @/@auto-import
  sname
  auto-import
  slabel
  auto-import
  sinputtype
  truefalse
  sdefault
  true
  sdescription
  指定我们是否可以在查询语言中使用非全限定的类名（仅限于本映射文件中的类）。
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  auto-import
    @/@auto-import/@true
    sname
    true
    slabel
    true
    svalue
    true
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sid
    true
    @/@auto-import/@false
    sname
    false
    slabel
    false
    svalue
    false
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sid
    false
  @/@default-lazy
  sname
  default-lazy
  slabel
  default-lazy
  sinputtype
  truefalse
  sdefault
  true
  sdescription
  指定了未明确注明lazy属性的Java属性和集合类， Hibernate会采取什么样的默认加载风格。
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  default-lazy
    @/@default-lazy/@true
    sname
    true
    slabel
    true
    svalue
    true
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sid
    true
    @/@default-lazy/@false
    sname
    false
    slabel
    false
    svalue
    false
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sid
    false
  @/@meta
  sname
  meta
  slabel
  meta
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.meta
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  meta
  @/@typedef
  sname
  typedef
  slabel
  typedef
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.typedef
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  typedef
  @/@import
  sname
  import
  slabel
  import
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.import
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  import
  @/@class
  sname
  class
  slabel
  class
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.class
  smany
  true
  seditCols
  2
  sinitialization
  false
  sdescription
  你可以使用class元素来定义一个持久化类.。<br /><br />若指明的持久化类实际上是一个接口，这也是完全可以接受的。之后你可以用<subclass></subclass>来指定该接口的实际实现类。 你可以持久化任何static（静态的）内部类。 你应该使用标准的类名格式来指定类名，比如：Foo$Bar。 对Hibernate映射来说视图和表是没有区别的，这是因为它们在数据层都是透明的（ 注意：一些数据库不支持视图属性，特别是更新的时候）。<br /><br />有时你想使用视图，但却不能在数据库 中创建它（例如：在遗留的schema中）。这样的话，你可以映射一个不可变的（immutable）并且是 只读的实体到一个给定的SQL子查询表达式。定义这个实体用到的表为同步（synchronize），确保自动刷新（auto-flush）正确执行， 并且依赖原实体的查询不会返回过期数据。<subselect></subselect>在属性元素 和一个嵌套映射元素中都可见。
  sid
  class
  @/@subclass
  sname
  subclass
  slabel
  subclass
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.subclass
  smany
  true
  seditCols
  2
  sinitialization
  false
  sdescription
  最后，多态持久化需要为父类的每个子类都进行定义。对于&ldquo;每一棵类继承树对应一个表&rdquo;的策略来说，就需要使用<tt class="literal"><font face="新宋体">&lt;subclass&gt;</font></tt>定义。<br /><br />每个子类都应该定义它自己的持久化属性和子类。 <tt class="literal"><font face="新宋体">&lt;version&gt;</font></tt> 和<tt class="literal"><font face="新宋体">&lt;id&gt;</font></tt> 属性可以从根父类继承下来。在一棵继承树上的每个子类都必须定义一个唯一的<tt class="literal"><font face="新宋体">discriminator-value</font></tt>。如果没有指定，就会使用Java类的全限定名。<br /><br />可以在单独的映射文件中，直接在<tt class="literal"><font face="新宋体">hibernate-mapping</font></tt>下定义<tt class="literal"><font face="新宋体">subclass</font></tt>，<tt class="literal"><font face="新宋体">union-subclass</font></tt>和<tt class="literal"><font face="新宋体">joined-subclass</font></tt>映射。这样你只要增加一个新的映射文件就可以继承一棵类继承树。你必须在子类的映射中指定<tt class="literal"><font face="新宋体">extends</font></tt> 属性来指定已映射的超类。注意：以前，这个特性使得映射文件的顺序变得很重要。从Hibernate3开始，当使用extends关键字的时候，映射文件的次序便不重要了。而在单一映射文件中，依旧需要保持将超类定义在子类之前这样的次序
  sid
  subclass
  @/@joined-subclass
  sname
  joined-subclass
  slabel
  joined-subclass
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.joined-subclass
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  joined-subclass
  @/@union-subclass
  sname
  union-subclass
  slabel
  union-subclass
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.union-subclass
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  union-subclass
  @/@resultset
  sname
  resultset
  slabel
  resultset
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.resultset
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  resultset
  @/@query
  sname
  query
  slabel
  query
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.query
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  query
  @/@sql-query
  sname
  sql-query
  slabel
  sql-query
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.sql-query
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  sql-query
  @/@filter-def
  sname
  filter-def
  slabel
  filter-def
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.filter-def
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  filter-def
  @/@database-object
  sname
  database-object
  slabel
  database-object
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.hibernate.hibernate-mapping-nodes.database-object
  smany
  true
  seditCols
  2
  sinitialization
  false
  sid
  database-object
  @/@scripts
  sname
  scripts
  slabel
  scripts
  sdescriptors
  xworker.lang.MetaDescriptor3/@actions
  sid
  scripts
    @/@scripts/@toHibernate
    sname
    toHibernate
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    svarScope
    Global
    sdisableGlobalContext
    false
    Scode
#$@text#$@
def thing = self.detach();
if(actionContext.get("entityMode") != null && entityMode == "dynamic-map"){
    for(cls in thing.get("class@")){
        cls.set("name", null);
    }
}

return thing;
#$@text#$@
    sdescriptors
    xworker.lang.actions.Actions/@GroovyAction
    sid
    toHibernate
    @/@scripts/@toHibernateXml
    sname
    toHibernateXml
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    svarScope
    Global
    sdisableGlobalContext
    false
    Scode
#$@text#$@
import org.xmeta.Thing;
import org.xmeta.ActionContext;

ActionContext context = new ActionContext();
context.put("thing", self);

Thing template = new Thing("xworker.core.util.TextTemplate");
template.set("type", "freemarker");
template.set("templatePath", "xworker/hibernate/hibernate_mapping.ftl");
template.set("templateEncoding", "UTF-8");
template.set("outputEncoding", "UTF-8");

return template.doAction("process", context);
#$@text#$@
    sinterpretationType
    Action
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@GroovyAction
    sid
    toHibernateXml
