两个外键作为主键

2024-01-02

如何使用 hibernate 注释实现下表?

当前代码是:(为了简洁而删除)

User

@Entity
@Table(name = "user")
public class User implements java.io.Serializable {
    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }
}

社交网络

@Entity
@Table(name = "social_network")
public class SocialNetwork implements java.io.Serializable {
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
}

社交档案

@Entity
@Table(name = "social_profile")
public class SocialProfile implements java.io.Serializable {
    @Id
    @ManyToOne
    @JoinColumn(name="user_id")
    public User getUser() {
        return user;
    }

    @Id
    @ManyToOne
    @JoinColumn(name="social_network_id")
    public SocialNetwork getSocialNetwork() {
        return socialNetwork;
    }
}

显然我的代码现在无法正常工作。有人能解释一下吗?


您需要一个可嵌入的 SocialProfileId,如下所示:

@Embeddable
public class SocialProfileId implements Serializable {
    @Column(name = "user_id")
    private long userId;
    @Column(name = "social_network_id")
    private long socialNetworkId;
}

那么,您的 SocialProfile 实体将如下所示:

@Entity
@Table(name = "social_profile")
public class SocialProfile implements java.io.Serializable {

    @EmbeddedId
    private SocialProfileId id;

    @ManyToOne
    @JoinColumn(name="user_id")
    public User getUser() {
        return user;
    }

    @ManyToOne
    @JoinColumn(name="social_network_id")
    public SocialNetwork getSocialNetwork() {
        return socialNetwork;
    }
}

EDIT抱歉,我在答案中混合了字段和方法的注释......永远不要这样做! ;-)

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

两个外键作为主键 的相关文章

随机推荐

  • 处理 TTN_LINKCLICK 消息后如何知道气球上点击了哪个链接?

    After 特拉马先生 https stackoverflow com users 960757 tlama已经回答了我的最后一个问题 如何捕获 TTN LINKCLICK 通知 https stackoverflow com questi
  • MVC4 捆绑:保存捆绑包 URL 的位置

    当bundle在MVC4中注册时 什么负责 拦截 传入的http要求 bundles someBundle v 1hDzBpmYJm4Iu OjRN1YqS1WeNThVl0kStLJGP8WCr41 另外 由于每个捆绑包的哈希值仅计算一次
  • Matplotlib 用颜色或形状区分平均值和中位数

    我正在使用 matplotlib 版本 1 4 3 我想制作一个 Violinplot 我想显示平均值和中位数 这很容易做到 但我想标记平均值和中位数 以便可以通过更改轻松区分它们其中之一的颜色和 或形状 但我在文档中看不到任何允许这样做的
  • 使用 PHP 的 Fedex SOAP API 请求多个跟踪号码

    我希望将所有 FedEx 跟踪信息缓存在我自己的数据库中 我的公司每天大约有 150 多个跟踪号码 根据这个链接 http www fedex com us developer product WebServices MyWebHelp A
  • 如何在 onReceive 计时器关闭 SwiftUI iOS 中导航另一个视图

    我试图在计时器达到特定时间时实现到另一个视图的导航 例如 我想在 5 分钟后导航到另一个视图 在 Swift 中 我可以轻松实现这一点 但我是 SwiftUI 的新手 非常感谢一些帮助 My code struct TwitterWebVi
  • Jetpack 使用多个可选参数组合导航

    https developer android com jetpack compose navigation optional args https developer android com jetpack compose navigat
  • Express.js sendFile 返回 ECONNABORTED

    在运行 Express js 3 8 6 的简单节点服务器上 我正在尝试使用sendFile向客户端发送一个简单的 HTML 文件 从读取的文件来看 该路径是正确的 浏览器上的缓存已禁用 显示的代码是 server js 文件 直接从节点运
  • 卸载活动 TCL Mac

    我正在尝试在 Mac 上卸载 Active TCL 但网站提供的代码不起作用 我收到错误消息 指出不是目录 当我查看代码提供的文件路径时 我可以手动查找 但它不起作用 还有其他方法可以摆脱这个吗 以下是提供的代码 cd Library Fr
  • 无法在 angularJs 中设置 DropDown 的选定值

    我有一个下拉菜单 我使用绑定它的值ng repeat在选项上 我想仅使用值字段设置选定的值 这是我的代码 div div
  • 有没有办法使用 ARM 模板创建 Azure 服务主体?

    我正在尝试编写一个 ARM 模板 该模板可以在 Azure 上创建具有所有指定权限的服务主体 最终目标是自动化此过程并使用模板创建 n 个服务主体 有没有办法做到这一点 非常感谢任何帮助 谢谢 正如 silent 所说 不可能通过 ARM
  • 动态规划矩阵链乘法

    我正在阅读动态规划中的矩阵链乘法 它有一个简单的递归解决方案 其运行时间呈指数级 http www geeksforgeeks org dynamic programming set 8 matrix chain multiplicatio
  • 如何在 WCF 中为非自定义绑定定义 maxReceivedMessageSize 时使用 ServiceRoutes

    编辑此内容以重新关注实际问题 我保留了消息底部的原始问题 但更改了标题和内容以反映实际发生的情况 我需要重写通过 ServiceRoute 机制添加到 MVC3 项目的 WCF 服务的 maxReceivedMessageSize 在 we
  • 为什么 230/100*100 不返回 230? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 的数学有问题吗 https stackoverflow com questions 588004 is javascripts math broken 在 Javascript
  • Flask-Admin 的访问控制

    我的 Flask 应用程序以基于 SQLAlchemy 修改模型为中心 因此 我发现 Flask admin 是一个很棒的插件 因为它将我的 SQLA 模型映射到已使用经过尝试和测试的可定制界面定义的视图的表单 我知道 Flask admi
  • 如何使 Android 中的 ListView 中的单元格在触摸时垂直展开和收缩?

    我在 ListView 中有一个单元格 里面有一堆文本 我显示前两行文本 如果超出则以 结束 我希望用户能够触摸单元格并使其在视图中动态扩展 显示所有数据 然后 当他们再次触摸细胞时 它会收缩回正常大小 我见过一个 iOS 应用程序可以做到
  • 在 MS Windows 中运行时 Gtk+ 图标丢失

    我有一个在 Ubuntu 上开发的 C GTK 应用程序 我想交叉编译它 以便它在 MS Windows 上运行 我跟着本指南 http www tarnyko net en q node 45设置编译器 程序编译成功 并在MS Windo
  • PHP datamapper - 为什么将它们用于非集合对象?

    也许这是一个答案微不足道的问题 但尽管如此 它还是让我发疯了几天 所以我想听到一个答案 我最近查找了大量与为我自己的项目构建自定义数据映射器 并且不使用 ORM 相关的信息 并阅读了 stackoverflow 或其他网站上的几个线程 这对
  • 为什么我的特定 CSS 代码更改没有反映在我的浏览器上?

    因此 我有一个用于徽章消息通知的特定 CSS 代码 当我弄乱它时 该代码不会更新 我的 css 的其余部分 表单 styles css 正在工作 当我编辑它们时 更改会得到反映 即使我将徽章 css 代码移至styles css更改仍然没有
  • 使用 VB2005 Express 进行源代码控制

    谁能推荐一个与 VB2005 Express 接口的良好源代码控制系统 由于 Visual Studio Express 版本不允许加载项 这是否意味着我将无法将源代码管理集成到 IDE 中 我习惯了将 SourceSafe 集成到 VB6
  • 两个外键作为主键

    如何使用 hibernate 注释实现下表 当前代码是 为了简洁而删除 User Entity Table name user public class User implements java io Serializable Id Gen