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

HiberNate Oneto许多和ManyToOne抛出异常

白哲茂
2023-03-14

我试图建立简单的一对多关系,但hibernate抛出了错误,不知道该怎么办。

类产品:

public class Products {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ManyToOne()
    @JoinColumn(name = "user_id", foreignKey = @ForeignKey(name = "fk_user"))
    private Users users;

}

和类用户:

public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long Id;


    @OneToMany()
    @JoinColumn(name = "product_id", foreignKey = @ForeignKey(name = "fk_product_id"))
    private List<Products> productsList = new ArrayList<>();

}

我遇到了错误:通过JDBC语句执行DDL“alter table products drop constraint fk_user”时出错

共有2个答案

戚锦
2023-03-14

由于外键位于子端(Productsclass),因此可以将其放在父端,并将其引用为拥有方:

public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long Id;


    @OneToMany(mappedBy="users")
    private List<Products> productsList = new ArrayList<>();

}
越鸿才
2023-03-14

下面是这种关系的一个实例:

抽屉类别:

@OneToMany (mappedBy="drawer", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, orphanRemoval = true)
private Set<Pocket> pockets;

袖珍类:

@ManyToOne (fetch=FetchType.EAGER)
@JoinColumn(name = "id_drawer", nullable = false)
private Drawer drawer;
 类似资料:
  • 我需要从java调用scala代码,因此需要告诉编译器某个方法抛出某些异常。对于一个异常很容易做到这一点,但是我很难声明一个方法抛出多个异常。 这不起作用:

  • 嘿StackOverflow社区, 关于抛出异常。一般什么时候抛出和异常,什么时候抓取? 假设我遇到了这样的情况,我不得不退出,因为发生了一些问题,我无法从它中恢复过来。我是投还是接? 我现在就这么做: 这样做对吗?如果我只是抛出异常会更合适吗?对不起,我是例外的新手:)

  • 问题内容: 我有这样的方法: 我想抛出一个内。编译器不允许我这样做,因为不允许将我的方法扔在那里。但是我需要抛出一个的子类来进行测试 (我不能抛出Unchecked)。显然这是一个hack,但我需要进行测试。我尝试过EasyMock,但它也不允许我这样做。任何想法如何做到这一点? 谢谢,肖恩·阮 问题答案: 方法1: Alexey Ragozin的这篇文章介绍了如何使用泛型技巧引发未声明的检查异常

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 主要内容:throws 声明异常,throw 拋出异常Java 中的异常处理除了捕获异常和处理异常之外,还包括声明异常和拋出异常。实现声明和抛出异常的关键字非常相似,它们是 throws 和 throw。 可以通过 throws 关键字在方法上声明该方法要拋出的异常,然后 在方法内部通过 throw 拋出异常对象。本节详细介绍在 Java 中如何声明异常和拋出异常。 throws 声明异常 当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部

  • 问题内容: 考虑以下代码: 无需添加方法签名即可编译该代码。(它与同样表现到位,太)。 我理解为什么 可以 安全地运行它,因为实际上不能将其引发在块中,因此不能引发已检查的异常。我有兴趣知道在何处指定此行为。 并非永远都不会达到目标:以下代码也会编译: 但是,如果抛出一个检查的异常,它不会像我期望的那样编译: 在JLS Sec 11.2.2中 ,它说: 一,其抛出的表达式语句(§14.18)具有静