hibernate 不生成外键中用注解的形式如何设置表中指定字段的外键?不是id。

hibernate的多对一关联,外键的设置_百度知道
hibernate的多对一关联,外键的设置
问题具体描述:两表A,B的主键都是string类型,B表中非主键的字段跟A表中的主键是一样的,那么,在映射文件中,怎么配置这个外键?
普通的多对一映射,B表加个&many-to-one&,双向的话A表再加个&set&这是hibernate的基础东西,建议LZ好好学学,hibernate的个更方便快捷的ORM框架
其他类似问题
为您推荐:
其他1条回答
&many-to-one name=&TUser& class=&m.comm.pojo.TUser& fetch=&select&&
&column name=&t_user_id& not-null=&true& /&
&/many-to-one&一方的主键,放在多方当外键。
&set name=&TUser& inverse=&true&&
&column name=&t_user_id& not-null=&true& /&
&/key&多方情况,在多方放一起集合这个是hibernate的基础东西。我一般在数据库把关系建好之后,用hibernate反向工程,这些全都自动生成!
外键的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁10:12 提问
hibernate的关联关系,是否数据库表中有外键没有关系?
hibernate的关联关系,是否数据库表中有外键没有关系?
昨天使用了hibernate做了一个多对一的关系,然后在做数据库字段的时候,一开始并没有去建立外键约束,只是把关联字段的信息放了上去,然后CRUD操作都没问题,然后看了一篇帖子,上面看到数据库表中有外键约束,这时候才想起来这个事情,我加了外键以后也没什么问题,再去掉还是没有问题,那么这里是加还是不加外键呢?hibernate自己处理好了吗?有什么区别吗?以后是加好还是不加好呢?谢谢各位了。
按赞数排序
Hibernate中的级联关系和数据库中表之间的外键关系完全是两回事。
数据库中设置外键主要是为了实现外键约束。
Hibernate中的级联关系主要是为了实现ORM的自动查询和存储相关表的数据。
Hibernate会根据配置自动管理表之间的关联关系的。
其实Hibernate会根据注解自动创建表以及外键关系的,我们只要java实体及配置就行了。
外键属于数据库设计时需要做的东西,这个不管Hibernate会不会帮你实现,都需要在数据库中自己手动添加,这个是为了保证数据库的约束条件。个人理解
其他相似问题
相关参考资料J2EE &&&&最新内容
J2EE &&&&随机内容Hibernate中用注解配置关系映射
这几天看公司的项目发现好多注解配置,运行在我的电脑中时总会报内存溢出,上网上找了一些这方面的文章,先挂博客上,等待有时间了再细看,这篇文章属于拿来主义,有些小丢人。希望大家
在此之前说一下 配置Tomcat的内存,以前一直在catalina.bat里面配置,用的网上找到的方法:
修改Catalina.bat文件
在166行"rem Execute Java with the applicable properties "以下每行
%_EXECJAVA% %JAVA_OPTS% �TALINA_OPTS% �BUG_OPTS%
-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath
"%CLASSPATH%" -Dcatalina.base="�TALINA_BASE%"
-Dcatalina.home="�TALINA_HOME%" -Djava.io.tmpdir="�TALINA_TMPDIR%"
%MAINCLASS% %CMD_LINE_ARGS% �TION%
中的�TALINA_OPTS%
替换成-Xms128m -Xmx512m
1. Hibernate Annotation关系映射有下面几种类型:
1)一对一外键关联映射(单向)
2)一对一外键关联映射(双向)
3)一对一主键关联映射(不重要)在这不演示
在实际中很少用,使用注解@PrimaryKeyJoinColumn
意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用
注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML
映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。
因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了
4)多对一关联映射
5)一对多关联映射(单向)
6)一对多关联映射(双向)
7)多对多关联映射(单向)
8)多对多关联映射(双向)
2.介绍各种映射用法
1)一对一外键关联映射(单向)
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="userid",unique=true)
//一对一外键关联,使用@OneToOne,并设置了级联操作
//@JoinColum设置了外键的名称为userid(数据库字段名),如果不设置,则默认为另一类的属性名+
&//外键的值是唯一的(unique),不可重复,与另一类的主键一直
2)一对一外键关联映射(双向)
 Class1里与上面一样,  
&& Class2:
@OneToOne(mappedBy="class2",cascade=CascadeType.ALL)
//一对一双向关联关系,使用@OneToOne
//注意:需要加上mappedBy="class2",如果不加上的话,
//Class2也会生成一个外键(class1_id)
//mappedby="class2"需要指向与他关联对象的一个属性
//说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的
//主体端负责维护联接列
//对于不需要维护这种关系的从表则通过mappedBy属性进行声明
//mappedBy的值指向主体的关联属性
//规律:只有是双向关联关系,都加上mappedby
//cascade=CascadeType.ALL级联
4)多对一关联映射
在多的一端配置:
@ManyToOne(targetEntity=Organization.class)
@JoinColumn(name="orgid")
//多对一注解@ManyToOne
//targetEntity指定了关联对象
//@JoinColumn(name="orgid")指定生产的外键的字段名,默认是org_id
5)一对多关联映射(单向)
@OneToMany
@JoinColumn(name="orgid")
6)一对多关联映射(双向)
@OneToMany(mappedBy="org")
@JoinColumn(name="orgid")
@ManyToOne
@JoinColumn(name="orgid")
7)多对多关联映射(单向)
@ManyToMany
@JoinTable(name="t_u_r",
8)多对多关联映射(双向)& User端
@ManyToMany
@JoinTable(name="t_u_r",
@ManyToMany(mappedBy="role")
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&声明:转自 博客园
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 hibernate 不生成外键 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信