关于hibernate xml中 many-to-one 的设置。

扁鵲東南飛 2010-07-27 02:54:35
这样的,有2个类型的model 其中A.java 是主的类别,B.java 是A的内容。

也是就是这样管理 A 里面包含的是类别,B里面是A类别的内容。
A.java (get set 方法就不写了)
         private int id;
private String diccode;
private String typename;
private String isenable;
private String remark;


B.java
         private int id ;
private String dicno;
private String dicname;
private String remark;
private DictypeInfo dictypeinfo;//A的一个对象,


现在是想B的hibernate的设置为many-to-one 但是不想设置A的主键关联,而是这是A的 “diccode”属性关联

<class name="com.zlm.domain.DiccontentInfo" table="tbl_diccontent">
<id name="id">
<generator class="native" />
</id>
<property name="dicno" type="java.lang.String"/>
<property name="dicname" type="java.lang.String"/>
<property name="remark" type="java.lang.String"/>

<many-to-one name="dictypeinfo" class="com.zlm.domain.DictypeInfo" fetch="select" property-ref="diccode">
<column name="diccode" length="20" />
</many-to-one>
</class>
这样关联,创建数据库的时候,出现错误。不知如何解决,希望各位指点迷津。。。谢谢了。
...全文
259 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
扁鵲東南飛 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yys79 的回复:]
不太明白,B表diccode与A表diccode关联,本来就是普通的多对一。关联关系也不是必须是成对的
[/Quote]
也是,关联关系也不是必须是成对的。
问题解决了。和大家分享下:
B里面的 many-to-one可以这样写:
B.xml
<many-to-one name="dictypeinfo" class="com.zlm.domain.DictypeInfo" property-ref="diccode">
<column name="diccode"/>
</many-to-one>

但是对应的A.xml里面也得有一个对应的关系,就是A的diccode 必须是唯一的。
<property name="diccode"  type="java.lang.String" unique="true" />


这样才能用程序自动生成表,而且不出问题。否则的话,就会出现关联不成功问题。
loveunittesting 2010-07-27
  • 打赏
  • 举报
回复
不太明白,B表diccode与A表diccode关联,本来就是普通的多对一。关联关系也不是必须是成对的
扁鵲東南飛 2010-07-27
  • 打赏
  • 举报
回复
我只需要B来关联A,不需要管A。也就是A是B的上级,A里面没有B的任何信息,当然A的diccode 要在B里出现关联,也是唯一的一个和B联系的地方。
loveunittesting 2010-07-27
  • 打赏
  • 举报
回复
如过b不是与A的主键关联,可以使用many-to-one里面property-ref属性来指定关联的字段
madFatso 2010-07-27
  • 打赏
  • 举报
回复
set 元素:
name:映射类属性的名称;

access:hibernate访问这个属性的策略

table:关联的目标数据库表

schema:目标数据库表的schema名字

catalog:目标数据库表的catalog名字

lazy:是否采用延迟加载

subselect:定义一个子查询

inverse:用于标识双相关联中被动的一方,一般标识一对多中一的一方设置为ture

sort;设置排序的类型,这个属性可以选择的值有:unsorted,不排序;natural.自然排序,也就是利用 java对象来进行排序;comparatorClass,指定某个实现了java.util.Comparator接口的类作为排序算法,注意,这里的排序要避免有order-by同时使用

mutable:标识被关联的对象是否可以改变

cascode;设置操作中的级联策略,这个属性可以选择的值有:all,在所有的操作的情况下均进行级联,none,在所有操作的情况下均不进行级联操作,save-update,在执行更新操作时级联,delete,在执行删除操作时级联,all-delete-orphan,当被关联对象失去关联宿主时,将被删除

order-by:设置排序规则

where;增加筛选条件,这里设置的条件将被加载到所有的sql查询语句中

batch-size:采用延迟加载时,一次读取数据的数量

fetch:设置抓取数据的策略,这个属性的可选值有join外连接抓取,select序列选择抓取
madFatso 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhangliangming_87 的回复:]
不会是没有能解决的方法吧?我都试了很多了。还是不成功啊。
[/Quote]

你把A类里加上set<b>
b类加上diccode
A.hbm.xml加上set元素
b去掉many-to-one
搜下hibernate 非主键关联
扁鵲東南飛 2010-07-27
  • 打赏
  • 举报
回复
不会是没有能解决的方法吧?我都试了很多了。还是不成功啊。
扁鵲東南飛 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 madfatso 的回复:]
可以
a.hbm.xml
<set
<key>
<column name="diccode" length="20"/>
</key>
<one-to-many clas……
[/Quote]

好像少写了些东西吧?<set 后面的熟悉如写啊?代表什么意思啊?

谢谢。。。。
madFatso 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangliangming_87 的回复:]
引用 1 楼 madfatso 的回复:
只能设置A的主键关联


不能用非主键关联么?????????
[/Quote]
可以
a.hbm.xml
<set
<key>
<column name="diccode" length="20"/>
</key>
<one-to-many class="b" />
</set>
扁鵲東南飛 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 madfatso 的回复:]
只能设置A的主键关联
[/Quote]

不能用非主键关联么?????????
madFatso 2010-07-27
  • 打赏
  • 举报
回复
只能设置A的主键关联
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 1.3.5. 双向关联 1.3.6. 使双向连起来 1.4. 第三部分 - EventManager web应用程序 1.4.1. 编写基本的servlet 1.4.2. 处理与渲染 1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选) 4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) 5.1.13. 组件(component), 动态组件(dynamic-component) 5.1.14. properties 5.1.15. 子类(subclass) 5.1.16. 连接的子类(joined-subclass) 5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧