如何使用Hibernate定义友谊关系?

2024-04-22

我需要有“FriendRequest”和“ListOfFriends”功能。类似于facebook,它显示收到的好友请求数量和批准的好友数量。

我所说的“FriendRequest”是指拥有用户收到的好友请求的列表。

通过“ListOfFriends”,我的意思是拥有用户的朋友列表。

为了实现这一点,我定义了以下类,但是当我尝试使用用户名检索用户时,将抛出“Stackoverflow”异常消息。似乎进入了无限循环。

当我从我的帐户中删除“好友请求”和“好友”时toString方法它停止抛出异常。

这个问题 https://stackoverflow.com/questions/31099346/how-to-model-a-friendship-relationship-in-hibernate与我要实现的目标相似,但区别在于我不知道有什么单独的证书课程。

Member

@Entity
public class Member implements Serializable {
    @Id
    @GeneratedValue
    private long id;
    @Column(name = "username", nullable = false, unique = true)
    private String username;
    @Column(nullable = false)
    private String fname;
    @Column(nullable = false)
    private String lname;
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "requester")
    private Set<Friendship> friendRequests = new HashSet<Friendship>();
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "friend")
    private Set<Friendship> friends = new HashSet<Friendship>();

    getters and setters

    @Override
    public String toString() {
       return "Member [
                .....                 
                , fname=" + fname + ", lname=" + lname
                //  + friendRequests.size() + ", friends=" + friends.size() + 
       "]";
    }
}

友谊

@Entity
public class Friendship implements Serializable {
    @Id
    @ManyToOne
    @JoinColumn(referencedColumnName = "username")
    Member requester;
    @Id
    @ManyToOne
    @JoinColumn(referencedColumnName = "username")
    Member friend;
    @Temporal(javax.persistence.TemporalType.DATE)
    Date date;
    @Column(nullable = false)
    boolean active;

我想建议数据库设计。

现在,您有一个按照 POJO 类的友谊表和朋友表。 相反,您可以只拥有多一列 boolean isAccepted;(POJO 类中的变量)的友谊表。

如果布尔值为 true,则表示该成员(朋友)是朋友。 当你想要获取所有好友时,将 isAccepted 设置为 true 来检索友谊行; 如果您只想获取好友请求(或待批准的待批准请求),请获取 isAccepted 设置为 false 的所有行。

通过当前的 DB 设计或 ER 模型,您正在使用。如果该人接受好友请求并存储在某个地方,您需要从友谊表中删除该行(因为它不再是好友请求)。你把好友存储在哪里。 根据你现在的设计,它存储在friends表中。但没有一列表明该行表示某人的朋友。这就像每次一个成员接受其他成员的请求时向朋友表添加一行(朋友)并且只是制作冗余行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Hibernate定义友谊关系? 的相关文章

随机推荐

  • 如何测试 ANT 中的目录是否为空?

    如何测试 ant 中的目录是否为空 您可以使用pathconvert http ant apache org manual Tasks pathconvert html任务来做到这一点 与setonempty财产
  • Lua中如何对数字表求和?

    Lua有内置的吗sum 功能 我似乎找不到一个 我几乎翻遍了文档中的所有地方 或许table sum 或类似的东西 以遵循当前的约定 但由于我找不到它 我不得不实现它 function sum t local sum 0 for k v i
  • Magento - 检查管理员和客户是否登录

    我有一个安装了 Magento 1 4 0 1 的 Web 服务器 我有另一个与之共享凭据的网站 我已经设法检查客户是否登录 在更改 Magento 中的 cookie 位置之后 但是当我还尝试确定管理员是否登录时 事情变得复杂 我只能得到
  • 当标题顺序更改时,带有状态保存的数据表过滤器会导致问题

    我有一个html页面和一些 javascript 代码 下面是我的工作html table class table table hover thead tr th class color white Employee ID th th cl
  • 检查用户是否是 SQL Server 中 dbo 角色的成员

    我需要一个 T SQL 语句来检查用户是否是 SQL Server 中数据库角色的成员 具体来说 我需要知道用户是否是 dbo 角色的成员 因为这样我就不必向该用户授予额外的权限 如果我尝试在用户为 dbo 时添加额外权限 则会失败 并且我
  • 在同一端口上支持 IPv6 和 IPv4 的 C# 服务器

    是否有可能有一个同时侦听和接受 IPv6 和 IPv4 客户端的 Socket 我在 C 中使用了 IPv6 套接字 希望它能自动向后兼容 但 IPv4 客户端会导致无效的 ip 地址异常 看一看 您可以接受 IPv4 客户端以及 IPv6
  • 有关如何部署 C++ 代码以在任何地方工作的提示

    我不是在谈论制作可移植代码 这更多的是一个分配问题 我有一个中型项目 它对常用库有几个依赖项 例如 openssl zlib 等 它在我的机器上编译得很好 现在是时候将它呈现给世界了 本质上是构建最好的工程 我想制作适用于 Windows
  • 当所有其他列都保证相同时,仅从 CSV 文件中读取选定的列

    我有一堆 CSV 文件 我试图将它们连接成一个 csv 文件 CSV 文件由一个空格分隔 如下所示 initial pos orientation ratio chr 106681 0 06 chr 106681 0 88 chr 1066
  • 选择 Haskell 解析器

    有很多开源的解析器实现 http hackage haskell org packages archive pkg list html cat parsing我们可以在 Haskell 中使用 Parsec http hackage has
  • 编辑就地 Swing 组件

    有谁知道 Swing 组件本质上是电子表格 允许就地编辑并且可以 以某种方式 绑定到数组 如果您不需要任何花哨的东西 您可以使用标准秋千JTable 参见例如here http download oracle com javase tuto
  • 子视图图层变换和布局Subviews

    我的问题与 UIView CALayer 变换触发超级视图中的layoutSubviews https stackoverflow com questions 24632876 uiview calayer transform trigge
  • 需要使 PowerShell 脚本更快

    我自学了 Powershell 所以我不知道它的一切 我需要搜索一个数据库 其中包含我输入的确切行数 数据库是预定义的 它包含 gt 11800 个条目 您能帮我找出是什么原因导致速度变慢吗 Code Dict Get Content C
  • 为什么 Selenium 有时会以安全模式启动 Firefox(用户无需按 Shift 键)?

    我正在使用 Firefox Selenium Web 驱动程序在专用测试机上运行自动测试 因此没有人按 Shift 键会导致 Firefox 以安全模式启动 但 Firefox 每天仍会多次启动此安全模式对话框 知道什么可能导致这种行为吗
  • 是否可以使用 opencv 将旋转图像复制到另一个图像的旋转矩形 ROI 中?

    好吧 很抱歉再次问几乎相同的问题 但我已经尝试了很多方法 但我仍然无法做我想做的事情 我什至不确定单独使用 opencv 是否可行 我旋转了一个图像 我想将其复制到另一个图像中 问题是 无论我以何种方式裁剪这个旋转图像 它总是复制到第二个图
  • Angular-material - 更改 md-select 多个选项中的分隔符

    我的表单中有一个 md select 其中包含多个选项 与Angular Material 站点中的演示 https material angularjs org latest demo select 它在其输入字段中显示以逗号分隔的选定选
  • ResolveUrl 无法内联工作

    我在 asp net 4 0 中收到以下代码的错误 错误消息 CS1525 无效的表达式术语 我在 Site Master 的 head 标签中使用此代码 你不能使用 gt EDIT如果您收到一条错误消息 The Controls coll
  • 按键值对字典数组进行排序

    我有一个字典数组 我想按每个字典中的 itemName 键按字母顺序对它们进行排序 我怎样才能在斯威夫特做到这一点 我想对项目数组进行排序 let array PFUser currentUser objectForKey Collecti
  • 使用(现在默认)Ember Data JSON-API 适配器处理错误

    我使用的是 Ember 1 13 7 和 Ember Data 1 13 8 它们默认使用 JSON API 标准来格式化发送到 API 和从 API 接收的有效负载 我想使用 Ember Data 的内置错误处理来向用户显示红色 错误 表
  • 如何在应用程序级别设置react-router的基本url?

    我有一个使用 create react app 创建的应用程序 我想将其安装在我网站的子目录中 推荐的方法是添加process env PUBLIC URL作为基本网址 IE
  • 如何使用Hibernate定义友谊关系?

    我需要有 FriendRequest 和 ListOfFriends 功能 类似于facebook 它显示收到的好友请求数量和批准的好友数量 我所说的 FriendRequest 是指拥有用户收到的好友请求的列表 通过 ListOfFrie