当前位置: 首页 > 知识库问答 >
问题:

Hibernate ForeignKey映射注释

锺离穆冉
2023-03-14

我想让hibernate生成一些带有外键的表等等。我将给出我希望hibernate生成的查询的一个示例:

create table RealtimeCost(id INTEGER not null primary key Autoincrement,
    mnemonic varchar(50)not null references Exchange(mnemonic),
    sid int not null references License(sid),
    price numeric(10,2) not null)

所以这个查询应该由hibernate通过注释生成。与此对应的类是:

@Entity
@Table
public class RealtimeCost {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @MapsId("mnemonic")
    @JoinColumn(referencedColumnName="sid")
    private String mnemonic;
    @MapsId("sid")
    @JoinColumn(referencedColumnName="sid")
    private Integer sid;
    @Column
    private Double price;

有关RealTimeCost中的助记符应映射到的内容的示例(RealTimeCost中的每个助记符在Exchange中只有一个值):

@Entity
@Table
public class Exchange {
    @Id
    @Column(name="mnemonic")
    private String exchange;
    @Column
    private String description;

正如您所看到的,我在文档的帮助下做了一些尝试,但是我不能让Hibernate生成外键。如果有人能告诉我这个类需要的注释和值,那就太好了,这样我就可以自己为其他类做了。此外,请告诉我是否需要更改exchange类中的任何内容以使映射工作。提前致谢

共有1个答案

陈业
2023-03-14

我不是专家,但我们让hibernate使用javax.persistence注释来完成连接实体的所有工作。

  @javax.persistence.ManyToOne( fetch = javax.persistence.FetchType.EAGER, optional = true )
  @javax.persistence.JoinColumn( name = "VIEWTYPE_ID", nullable = true, unique = false, insertable = true, updatable = true )
  private com.company.other.subproject.ViewType viewType;

也许这就是你需要的。从这里开始,让我们休眠,关心必须创建或不创建的表,并且foreignKeys会根据与之通信的数据库的方言自动创建。

 类似资料:
  • 我正在评估JDBI作为Spring、JDBC和MyBatis的可能替代方案,但遇到了一些问题。我在Spring Boot1.2.5和Spring4中使用JDBI。 我得到了下面的stacktrace,如下所示。我做错了什么?文件似乎有点缺乏。

  • 以下是我的上下文:我使用byteBuddy动态生成一个类,该类根据外部配置将一个对象转换为另一个对象。我遇到了一些问题,我想找到一个替代方案,这就是我发现MapStruct的方式。 因此,我试图构建简单的映射器,我想知道是否有可能自定义注释以添加转换函数。例如,我想要: 在mapper实现中,我会有如下内容: 如果有人能帮我做到这一点,我将不胜感激,这将节省我很多时间。 提前谢谢。

  • 问题内容: 几天前,我开始与Hibernate合作时,我只是想知道:假设您正在从头开始一个项目。您是否将使用基于注释的映射或Hibernate映射文件来生成数据库模式。 据我了解,Hibernate映射文件提供了一些注解所没有的功能(至少不是完全等效的功能)。但是,我仍然感觉到,如今,使用Hibernate的项目宁愿基于注释而不是Hibernate映射文件。 有没有人选择过注解上的映射文件,如果是

  • 我有三个表:用户,角色,董事会。每个用户可以有多个板,但在一个板中用户只能有一个角色。我创建了三个类并添加了注释: Hibernate创建一个新表,如下所示: 我使用的是hibernate 4.2.2。

  • 我正在创建一个类来审核对Spring Boot应用程序控制器类的调用: 我的一个Controller类看起来像这样——在类AND方法级别有注释(此时我不能更改): 我可以很好地提取url、methodtype和参数。然而,我现在很难做的是拉控制器类的注释('/applications'),这样我就可以为我的审计表构建完整的URL。 我知道还有其他审计选项(比如Spring Boot Actuato