不知道是不是表没有主键的原因,我查出来的数据都是第一条,比如我查到30条数据,但是30条都是第一条的 数据。
请问@注解配置实体类映射 要怎么配置
我的实体类是
@Entity
3.@Table(name = “tb_cat”)
4.public class Cat{
@GenericGenerator(name = "generator", strategy = "increment")
@Id //我没有id 但是去掉就会报错
@GeneratedValue(generator = "generator")
7. private String date;
8. @Column(name = “name”)
9. private String name;
11. @Column(name = “createDate”)
12. private int number;
13. //….getter、setter方法省略
14.}
我测试了一下,如果我再数据库中加主键就能正确获取到数据也就是说
@GenericGenerator(name = "generator", strategy = "increment")
@Id //我没有id 但是去掉就会报错
@GeneratedValue(generator = "generator")
这一部分代码错了,我查了api也不知道,往上也搜索不到
,还有无满意结贴输入什么密码啊,这么多打酱油的
38 个解决方案
#1
亲,hibernate用的时候,如果你没有定义主键映射,是不行的。是发生你说的这种数据重复的现象
解决办法就是:将所有的列做为复合主键,记得要序列化哦。
解决办法就是:将所有的列做为复合主键,记得要序列化哦。
#2
如果没人能回答出提问,我csdn积分要来何用(回答出问题者给全分,也可以追加分)
没人能回答出来,你可以把分给你认为尽力给你回答的人,这样你结帖率高了,会更有人来给你回答
积分也可以换取下载积分的,100分可用分换20下载分
没人能回答出来,你可以把分给你认为尽力给你回答的人,这样你结帖率高了,会更有人来给你回答
积分也可以换取下载积分的,100分可用分换20下载分
#3
新搞个主键字段如行号什么的,@Id加到那个字段上吧。
#4
你是怎么查询数据的?
#5
没有主键是肯定不行的,能看一下你的dao层的代码吗??
#6
哈哈,亲,记得一定要有主键
#7
不能加主键,副总裁做的数据库表,我没权利,他也不同意修改
#8
其实昨天公司高层也有一个给我提过复合主键用了,但是只知道在配置文件中用,
我的实体类是实例化的,公司是内网,无法上网,这是我随便打的例子。
大哥,能不能提供个Annotation配置实体类的例子
求赐教,昨天的帖子会和今天的一起结了,都是一个问题
#9
没有让你加主键。。 在hibernate里面,他需要主键来标识唯一性,
你只需要改实体,将所有的属性做为一个联合主键,在实体里面体现出映射就好了。
#10
这个复合主键告诉 hibernate, 我是用所有的列来标识唯一性的
#11
@Embeddable
public class StudentPK implements Serializable{
}
将你所有的属性都写进去,名子要一样哦。 要重写hashcode() equals方法
然后在你的实体类里面加上一个:
@Id
private StudentPK pk;
public class StudentPK implements Serializable{
}
将你所有的属性都写进去,名子要一样哦。 要重写hashcode() equals方法
然后在你的实体类里面加上一个:
@Id
private StudentPK pk;
#12
hashcode() equals方法,
不懂。。。。。。。。。
弱弱的最后请教一次
#13
你的IDE应该支持自动生成hashcode和equals。
步骤:
右键--source--generate hashcode and equals
步骤:
右键--source--generate hashcode and equals
#14
费这么多事 加个uuid主键不就完了 没有主键的表 能干神马?
#15
学习下。
#16
@GenericGenerator(name = "generator", strategy = "uuid")
@Id
@GeneratedValue(generator = "generator")
结果还是错误的,
难道是我配置错了嘛,
麻烦您出示正确答案
#17
你就按我说的做。哎,用一个复合主键就搞定了
#18
问题是,你的表符合什么范式?表内记录会不会重复?如果会重复的话,hibernate的联合主键也没法帮你,因为没法区分是哪条数据。
hibernate对象需要一个id键来标识这个数据的唯一性,如果你的数据库表设计不符合的话,可能不适合用hibernate ok?
hibernate对象需要一个id键来标识这个数据的唯一性,如果你的数据库表设计不符合的话,可能不适合用hibernate ok?
#19
我按您说的做了
@Embeddable
public class StudentPK implements Serializable{
//属性
//setget
//重写hashcode和equals
}
@Entity
3.@Table(name = “tb_cat”)
4.public class Cat{
@GenericGenerator(name = "generator", strategy = "increment")
@Id //我没有id 但是去掉就会报错
private StudentPK pk;
@GeneratedValue(generator = "generator")
7. private String date;
8. @Column(name = “name”)
9. private String name;
11. @Column(name = “createDate”)
12. private int number;
13. //….getter、setter方法省略
14.}
是这样吧 ,反而没有数据出来了
#20
表内的时间和数量做复合主键是不会重复的
#21
友情帮顶,把贴顶起来!
#22
那就用联合主键就行,还有,你的注解位置有些问题吧。另外,库里没有主键,就别用generator increment了。这个是给自增主键使的。
那个createDate是唯一的吗?如果是的话,用它做主键吧。
那个createDate是唯一的吗?如果是的话,用它做主键吧。
#23
第一次用Annotation,不知道怎么配置
我的表中没有单个字段是唯一的 只有 date和number一起才是唯一的
#24
帮顶个
#25
http://a3mao.iteye.com/blog/195151 参考一下这个吧。联合主键我没使用annotation做过,不过hibernate底层原理是一样的。
祝成功
祝成功
#26
没有主键的表意味着允许重复的数据。
用所有字段作为符合主键 ,查询数据时 是不是会漏掉一些重复的数据
比如有两条‘A,B,C,D’数据,但只能查出来一条
#27
说错了,
没有主键的表允许有重复数据
用所有字段做符合主键意味着 不允许有重复数据
逻辑意义可是不同的哦
没有主键的表允许有重复数据
用所有字段做符合主键意味着 不允许有重复数据
逻辑意义可是不同的哦
#28
我是来顶的,不懂hibernate的说。
#29
这要看表的数据结构来定
比如 我的表中 有date 和 info 2个属性,2组数据不会出现同时出现的几率,如1990年有猪,在1990年就会再有猪了 只是在后面的number+1
#30
很感谢大家,用了复合主键还是报错的。不知道是不是运用错了,有谁能给个完整的例子,晚上还没有 就结贴了。继续坐等
#31
一定要有主键的,没有的话,就把整个实体作为主键
#32
代码放出来看看。
这个东西吧,经历点错误才能学到东西,呵呵,楼主加油。
这个东西吧,经历点错误才能学到东西,呵呵,楼主加油。
#33
亲..额..好恶心...
友情提示,MyEclipse -> DB Browser -> 选中你要映射的表 右键 -> Hibernate Reverse Engineering
可以让ME自动生成带有复合主键的表映射
友情提示,MyEclipse -> DB Browser -> 选中你要映射的表 右键 -> Hibernate Reverse Engineering
可以让ME自动生成带有复合主键的表映射
#34
学习了,顶一下!!!!!!
#35
打个酱油
#36
hibernate映射要有主键才行...数据库表没有主键的话 用hibernate查询不到的....这是小生半年使用的小小经验...
#37
在配置文件用复合主键是可以的,只是我没配出来
#38
最后没有用annotation配置出来,
用原生态sql取得到了正确的数据,在封装到的实体类,哎,就是麻烦了点
用原生态sql取得到了正确的数据,在封装到的实体类,哎,就是麻烦了点
#1
亲,hibernate用的时候,如果你没有定义主键映射,是不行的。是发生你说的这种数据重复的现象
解决办法就是:将所有的列做为复合主键,记得要序列化哦。
解决办法就是:将所有的列做为复合主键,记得要序列化哦。
#2
如果没人能回答出提问,我csdn积分要来何用(回答出问题者给全分,也可以追加分)
没人能回答出来,你可以把分给你认为尽力给你回答的人,这样你结帖率高了,会更有人来给你回答
积分也可以换取下载积分的,100分可用分换20下载分
没人能回答出来,你可以把分给你认为尽力给你回答的人,这样你结帖率高了,会更有人来给你回答
积分也可以换取下载积分的,100分可用分换20下载分
#3
新搞个主键字段如行号什么的,@Id加到那个字段上吧。
#4
你是怎么查询数据的?
#5
没有主键是肯定不行的,能看一下你的dao层的代码吗??
#6
哈哈,亲,记得一定要有主键
#7
不能加主键,副总裁做的数据库表,我没权利,他也不同意修改
#8
其实昨天公司高层也有一个给我提过复合主键用了,但是只知道在配置文件中用,
我的实体类是实例化的,公司是内网,无法上网,这是我随便打的例子。
大哥,能不能提供个Annotation配置实体类的例子
求赐教,昨天的帖子会和今天的一起结了,都是一个问题
#9
没有让你加主键。。 在hibernate里面,他需要主键来标识唯一性,
你只需要改实体,将所有的属性做为一个联合主键,在实体里面体现出映射就好了。
#10
这个复合主键告诉 hibernate, 我是用所有的列来标识唯一性的
#11
@Embeddable
public class StudentPK implements Serializable{
}
将你所有的属性都写进去,名子要一样哦。 要重写hashcode() equals方法
然后在你的实体类里面加上一个:
@Id
private StudentPK pk;
public class StudentPK implements Serializable{
}
将你所有的属性都写进去,名子要一样哦。 要重写hashcode() equals方法
然后在你的实体类里面加上一个:
@Id
private StudentPK pk;
#12
hashcode() equals方法,
不懂。。。。。。。。。
弱弱的最后请教一次
#13
你的IDE应该支持自动生成hashcode和equals。
步骤:
右键--source--generate hashcode and equals
步骤:
右键--source--generate hashcode and equals
#14
费这么多事 加个uuid主键不就完了 没有主键的表 能干神马?
#15
学习下。
#16
@GenericGenerator(name = "generator", strategy = "uuid")
@Id
@GeneratedValue(generator = "generator")
结果还是错误的,
难道是我配置错了嘛,
麻烦您出示正确答案
#17
你就按我说的做。哎,用一个复合主键就搞定了
#18
问题是,你的表符合什么范式?表内记录会不会重复?如果会重复的话,hibernate的联合主键也没法帮你,因为没法区分是哪条数据。
hibernate对象需要一个id键来标识这个数据的唯一性,如果你的数据库表设计不符合的话,可能不适合用hibernate ok?
hibernate对象需要一个id键来标识这个数据的唯一性,如果你的数据库表设计不符合的话,可能不适合用hibernate ok?
#19
我按您说的做了
@Embeddable
public class StudentPK implements Serializable{
//属性
//setget
//重写hashcode和equals
}
@Entity
3.@Table(name = “tb_cat”)
4.public class Cat{
@GenericGenerator(name = "generator", strategy = "increment")
@Id //我没有id 但是去掉就会报错
private StudentPK pk;
@GeneratedValue(generator = "generator")
7. private String date;
8. @Column(name = “name”)
9. private String name;
11. @Column(name = “createDate”)
12. private int number;
13. //….getter、setter方法省略
14.}
是这样吧 ,反而没有数据出来了
#20
表内的时间和数量做复合主键是不会重复的
#21
友情帮顶,把贴顶起来!
#22
那就用联合主键就行,还有,你的注解位置有些问题吧。另外,库里没有主键,就别用generator increment了。这个是给自增主键使的。
那个createDate是唯一的吗?如果是的话,用它做主键吧。
那个createDate是唯一的吗?如果是的话,用它做主键吧。
#23
第一次用Annotation,不知道怎么配置
我的表中没有单个字段是唯一的 只有 date和number一起才是唯一的
#24
帮顶个
#25
http://a3mao.iteye.com/blog/195151 参考一下这个吧。联合主键我没使用annotation做过,不过hibernate底层原理是一样的。
祝成功
祝成功
#26
没有主键的表意味着允许重复的数据。
用所有字段作为符合主键 ,查询数据时 是不是会漏掉一些重复的数据
比如有两条‘A,B,C,D’数据,但只能查出来一条
#27
说错了,
没有主键的表允许有重复数据
用所有字段做符合主键意味着 不允许有重复数据
逻辑意义可是不同的哦
没有主键的表允许有重复数据
用所有字段做符合主键意味着 不允许有重复数据
逻辑意义可是不同的哦
#28
我是来顶的,不懂hibernate的说。
#29
这要看表的数据结构来定
比如 我的表中 有date 和 info 2个属性,2组数据不会出现同时出现的几率,如1990年有猪,在1990年就会再有猪了 只是在后面的number+1
#30
很感谢大家,用了复合主键还是报错的。不知道是不是运用错了,有谁能给个完整的例子,晚上还没有 就结贴了。继续坐等
#31
一定要有主键的,没有的话,就把整个实体作为主键
#32
代码放出来看看。
这个东西吧,经历点错误才能学到东西,呵呵,楼主加油。
这个东西吧,经历点错误才能学到东西,呵呵,楼主加油。
#33
亲..额..好恶心...
友情提示,MyEclipse -> DB Browser -> 选中你要映射的表 右键 -> Hibernate Reverse Engineering
可以让ME自动生成带有复合主键的表映射
友情提示,MyEclipse -> DB Browser -> 选中你要映射的表 右键 -> Hibernate Reverse Engineering
可以让ME自动生成带有复合主键的表映射
#34
学习了,顶一下!!!!!!
#35
打个酱油
#36
hibernate映射要有主键才行...数据库表没有主键的话 用hibernate查询不到的....这是小生半年使用的小小经验...
#37
在配置文件用复合主键是可以的,只是我没配出来
#38
最后没有用annotation配置出来,
用原生态sql取得到了正确的数据,在封装到的实体类,哎,就是麻烦了点
用原生态sql取得到了正确的数据,在封装到的实体类,哎,就是麻烦了点