比如 用户——帖子,用户可以收藏帖子,一个帖子可以被多个用户收藏, 如果不用hibernate,那么我会建立一个favorite收藏表,上述两个问题就都不存在了。 请问还有没有更好的解决方案,或者实际项目中一般是怎样做的?(最后30分了。。。我问题实在太多) |
|
这样做后发现也实现不了复合主键
|
|
10分 |
要添加其他列,可以做成两个一对多!
|
http://blog.csdn.net/w215230188/article/details/44967039 不谢
|
|
那如何设置复合主键?比如:User 和 Music, 中间是收藏实体Favorite,favorite对于User和Music分别都添加一对多关系。 精简版代码: public class User { @ManyToOne(targetEntity=Favorite.class) @JoinColumn(name="userId",nullable=false) private Favorite favorite; //省略其他 } public class Music { @ManyToOne(targetEntity=User.class) @JoinColumn(name="muiscId",nullable=false) private Favorite favorite; //省略其他 } public class Favorite { @OneToMany(targetEntity=User.class,mappedBy="favorite") private Set<User> users; @OneToMany(targetEntity=Music.class,mappedBy="favorite") private Set<Music> musics; //省略其他 } |
|
20分 |
关于复合主键注解配置 http://blog.csdn.net/happylee6688/article/details/17636801
如果实现这样的“一个用户只能收藏一个帖子一次”的需求,方法有很多,复合主键只是其中一种。 假如在技术上遇到难题,试着去想另外一种自己能实现的方法,能解决的先解决的,实在没办法再另打算。 这个难题我之前也遇到过,hibernate的多对多添加不了多余字段,所以我采用了我熟悉的一对多的方法,问题就迎刃而解了,在程序里做判断的用户是否重复收藏了帖子,复合主键也给我pass。 希望能帮到你! |
已经解决了,发现是映射翻了。应该是favorite是多的一方 |