论坛首页 Java企业应用论坛

关于数据字典的糊涂问题

浏览 8830 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-04-26  
系统中有"数据字典"一类的东西,也就是一些参考值,比如:性别,1=男,2=女,这样.也并不需要一个单独的ID,似乎是做一个枚举类型来处理比较合适,但我需要要放到数据库,以便能脱机修改,所以我这么映射:

<class name="xxx.Sex" table="SEX">
	<id name="value" unsaved-value="null" >
		<generator class="assigned" />
	</id>
	<property name="label" not-null="true" />
</class>
<class name="xxx.Person" table="PERSON">
	<id name="id">
		<generator class="native" />
	</id>
	<property name="name" />
	<many-to-one name="name" class="xxx.Sex" column="sex_value" />
</class>


对于一个单独的"数据字典"这么做,似乎没有问题.

但是,我发现系统中有N多个这样的"数据字典",比方,20多个.他们每个字典的数量都不是特别多,比方一般是十个左右的数据.那么,为每个都建一个表似乎很浪费.我希望能够压缩到一张"数据字典表"中存储.即.

<class name="xxx.Type" table="TYPE">
	<id name="value" unsaved-value="null" length="80" >
		<generator class="assigned" />
	</id>
	<discriminator column="subclass" force="true" />
	<property name="label" not-null="true" length="80" />
	<subclass name="xxx.Sex" discriminator-value="Sex" />
</class>


也就是说,我希望通过这种方式获取它的值列表
// hql
select * from xxx.Sex
// sql
select * from Type where subclass = 'Sex'


但是,问题是,上面的映射并不能得到我想要的东西.

首先,这样的映射中 value 是 primary key,但我实际上需要的是 value 和 subclass 做联合主键.

其次,我如果使用 <composit-id> 那势必要将 subclass 暴露为一个属性.而这个 subclass 对我毫无意义.

再其次,我如果引入一个我并不需要的 id 作为主键,然后在 <many-to-one> 中以 property-ref 参考 value 值,这个时候会得到一个莫名其妙的 property-ref not found 异常(经查证,这是一个bug,在3.0以上版本得到修正)

有没有谁碰见过这种妖怪问题?

好像这样的需求并不妖怪吧,我只是希望discriminator column="subclass" force="true"这样的东西能够加入主键而已.

by the way.
有没有人知道,如何能够让 type="year" (mysql所支持的日期类型)的 property 正常生成我想要的 DDL.

请原谅我的执着,我总觉得,如果能够直接 ant ddl 得到我想要的 ddl ,那是一件很惬意的事情,而不是每次生成了之后都很郁闷的去手工修改得到 ddl .
   发表时间:2006-08-23  
楼主解决了吗?我也遇到这个问题了
0 请登录后投票
   发表时间:2006-08-23  
我公司的字典数据是有排号的
男,table1,10001
女,table1,10002
办公室,table2,20001
开发办,table2,20003
总经理,table3,:30001
。。。。。。。。
用一个表
0 请登录后投票
   发表时间:2006-08-23  
我们的有一个分类表,还有一个属性表,关联起来做不到,因为在业务表中并没有保存分类表的ID
0 请登录后投票
   发表时间:2006-08-25  
抛出异常的爱 写道
我公司的字典数据是有排号的
男,table1,10001
女,table1,10002
办公室,table2,20001
开发办,table2,20003
总经理,table3,:30001
。。。。。。。。
用一个表


     用两张表,一表是字典表的描述表,另一个是字典代码表,存储所有字典代码的信息。字典代码表中有一个字典表的外键,用以区分不同的字典表代码。当然字典表还可以建立父子关系,这个大同小异。
0 请登录后投票
   发表时间:2006-10-16  
stamen 写道
抛出异常的爱 写道
我公司的字典数据是有排号的
男,table1,10001
女,table1,10002
办公室,table2,20001
开发办,table2,20003
总经理,table3,:30001
。。。。。。。。
用一个表


     用两张表,一表是字典表的描述表,另一个是字典代码表,存储所有字典代码的信息。字典代码表中有一个字典表的外键,用以区分不同的字典表代码。当然字典表还可以建立父子关系,这个大同小异。


其实只要字典描述表中加一个描述记录代码的字段就行了,可以为不同类型的字典记录分类;同时加一个父记录的代码字段可以形成树型结构
0 请登录后投票
   发表时间:2006-10-18  
能用一张表的数据..建议还是放一张表...速度会快一点...
0 请登录后投票
   发表时间:2006-10-18  
我建议分表,不喜欢使用subclass。这样逻辑清晰,也方便维护。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics