GVKun编程网logo

从JPA 2.1开始,如何命名ManyToOne引用的外键约束?(jpa外键注解)

13

在本文中,我们将带你了解从JPA2.1开始,如何命名ManyToOne引用的外键约束?在这篇文章中,我们将为您详细介绍从JPA2.1开始,如何命名ManyToOne引用的外键约束?的方方面面,并解答j

在本文中,我们将带你了解从JPA 2.1开始,如何命名ManyToOne引用的外键约束?在这篇文章中,我们将为您详细介绍从JPA 2.1开始,如何命名ManyToOne引用的外键约束?的方方面面,并解答jpa外键注解常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的@ManyToOne JPA关系可以为空吗?、asp.net – 如何实现跨数据库外键约束?、Hibernate / JPA ManyToOne与OneToMany、Hibernate @ManyToOne引用未知实体

本文目录一览:

从JPA 2.1开始,如何命名ManyToOne引用的外键约束?(jpa外键注解)

从JPA 2.1开始,如何命名ManyToOne引用的外键约束?(jpa外键注解)

@org.hibernate.annotations.ForeignKey 已被弃用,但我找不到任何示例,JPA 2.1等效项将是什么样子?

@ManyToOne@ForeignKey(name = "FK_USER") //@deprecated Prefer the JPA 2.1 introduced {@link javax.persistence.ForeignKey} instead.private User user;

没有不推荐使用的注释该如何实现?

答案1

小编典典

如文档所示,此注释不能应用于任何对象:

@Target(值= {})

因此,它只能用作另一个注释的一部分(在“ 另请参见” 部分中列出):

@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))

@ManyToOne JPA关系可以为空吗?

@ManyToOne JPA关系可以为空吗?

我有一个表具有另一个表的外键(许多关系),但我希望它可以为空。

像这样:

public class SubType() {    @Id    @GeneratedValue(generator = "system-uuid")    @GenericGenerator(name = "system-uuid", strategy = "uuid")    private String id;}public class TopUp {    @Column(nullable = true)    @ManyToOne(optional = false, fetch = FetchType.LAZY)    private SubType subType;}

但是@Column(nullable =true)抛出NullPointerException和表示子类型不能为null。有什么办法可以使ManyToOne接受null?

答案1

小编典典

您需要设置:

@ManyToOne(optional = true, fetch = FetchType.LAZY)

optional=false

@Column(nullable=true)是指示DDL生成工具,包括NULLSQL列类型约束。

asp.net – 如何实现跨数据库外键约束?

asp.net – 如何实现跨数据库外键约束?

假设我有两个模式:HR和Orders.

[HR].Employees         [Orders].Entries
--------------         ----------------
Id_Employee    ---->   Employee
Fullname               Id_Entry
Birthday               Description
                       Amount

正如您所看到的,我想要的是能够建立跨数据库的外键,但是当我使用数据库链接尝试这个时,我得到:

-- From [Orders]
ALTER TABLE Entries
    ADD CONSTRAINT FK_Entries_Employees FOREIGN KEY (Employee)
    REFERENCES Employees@HR;
COMMIT;

ORA-02021: DDL operations are not allowed on a remote database

有没有解决的办法?它是遗留数据库,因此我无法更改现有架构.

对于NHibernate人群:我会使用这种关系来映射NHibernate的域对象.

解决方法

一种选择是在[Orders]上创建Employees的物化视图,然后将其用作外键的父项.

当然,这有一些缺点.特别是,

– 如果不禁用外键,您将无法完全刷新物化视图,因此必须快速刷新.

– 在物化视图刷新之前,输入到EMPLOYEES的密钥将不可用于ENTRIES.如果这很关键,您可能希望将其设置为在提交时刷新.

其他替代方案是通过触发器或后清理过程自己处理密钥实施.或者说服DBA,这些模式可以驻留在同一个数据库实例上.

Hibernate / JPA ManyToOne与OneToMany

Hibernate / JPA ManyToOne与OneToMany

我目前正在阅读有关实体关联的Hibernate文档,但遇到一些困难却难以理解。它在本质上做的区别ManyToOneOneToMany联系。尽管我在实际项目中使用了它们,但是我无法完全理解它们之间的差异。据我了解,如果一个表/一个实体ManyToOne与另一个实体有关联,则该关联应来自另一侧OneToMany。那么,我们应该如何根据具体情况决定选择哪个呢?它又如何影响数据库/查询/结果?到处都有很好的例子吗?

PS:我认为这与问题相关,如果有人可以解释关联所有者的观点以及双向关联和单向关联之间的区别,那将是有帮助的。

Hibernate @ManyToOne引用未知实体

Hibernate @ManyToOne引用未知实体

我收到以下hibernate异常:

@OneToOne or @ManyToOne on Matchup.awayTeam references an unknown entity: Team

简化的Matchup类如下所示:

@Entity public class Matchup implements Serializable 
{
   protected Team awayTeam;

   @ManyToOne 
   @JoinColumn(name="away_team_id")
   public Team getAwayTeam() {
      return awayTeam;
   }
}

简化的Team类如下所示:

@Entity
public class Team implements Serializable {
    protected List<Matchup> matchups;

    @OneToMany(mappedBy="awayTeam",targetEntity = Matchup.class,fetch=FetchType.EAGER,cascade=CascadeType.ALL)
    public List<Matchup> getMatchups() {
       return matchups;
    }
}

笔记:

  • 比赛和团队都有子类。我不确定这是否会影响局势。
  • 我的persistence.xml中列出了Matchup和Team都包括在内。
  • 如果我在两个getter方法上都使用@Transient批注,该错误将消失。

谁能阐明为什么会发生这种异常?

关于从JPA 2.1开始,如何命名ManyToOne引用的外键约束?jpa外键注解的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于@ManyToOne JPA关系可以为空吗?、asp.net – 如何实现跨数据库外键约束?、Hibernate / JPA ManyToOne与OneToMany、Hibernate @ManyToOne引用未知实体的相关知识,请在本站寻找。

本文标签: