我有两个实体
@Entity
@Table(name = "Documents")
public class Document extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(nullable = true, name = "asset_id")
private Asset asset;
@ManyToOne( targetEntity = Debt.class,
fetch = FetchType.LAZY, optional = false)
@JoinColumn(nullable = true, name = "debt__id")
private Debt debt;
}
和
@Entity
@Table(name = "debts")
public class Debt extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "debt", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Document> documents;
}
此映射:
@ManyToOne( targetEntity = Debt.class,
fetch = FetchType.LAZY, optional = false)
@JoinColumn(nullable = true, name = "debt_id")
private Debt debt;
最近增加了。
在运行应用程序时,应用程序崩溃,错误是:通过JDBC语句执行DDL“alter table documents add debt__idbigint not null”时出错
我检查了Hibernate发送到数据库的sql查询,它是:更改表文档添加debt_idbigint不null
此查询失败,因为文档
表上已经有记录,因此无法添加不带默认值的不可为空列。
那么,为什么@JoinCol列注释中的nullable=true会被hiberNate忽略。
我到处都找不到答案。这是一款spring boot应用,如果有帮助的话。
只需从@ManyToOne
中删除optional=false
。这就是罪魁祸首。此外,您不需要在@JoinColumn
中提及nullable=true
,这在默认情况下是true
@ManyToOne( targetEntity = Debt.class,
fetch = FetchType.LAZY)
@JoinColumn(name = "debt__id")
private Debt debt;
在Hibernate中,要指定用于加入关联的列,请使用@JoinCol列注释,例如: 在大多数情况下,列的名称是用大写的类名加上。因此,从Hibernate自动派生它是合理的(例如,在Django的ORM中就是这样做的)。但这样的行为是以某种方式实施的吗?
我有一个班级组织,只有很少的字段,如下所示。 为了在客户端以简单的方式处理日期,我将转换为,并使用这些JsonSerializer将其发送给客户端,如下所示 我有一个endpoint,它将执行get organization并像下面这样在响应映射中插入结果。 但是我在客户端看到的最终结果JSON是 这里的日期以某种形式出现,而不是很长。如果我使用Jackson转换相同的数据,而不使用云endpoi
问题内容: 我有一个使用Hibernate为HSQL db生成表的应用程序(因为我的应用程序仍在开发中)。在我的域模型中,我已经设定 当我使用DBVisualizer打开数据库时,可以看到所有设置都正确,除了它无法正常工作外,我的列接受的长度超过10个字符的值。当我尝试在DBVisualier中手动运行查询时,它会失败,但是应该进入休眠状态。 同样非常奇怪的是,当我使用文件(而不是在内存db中)以
问题内容: 我在Java中看到一些声明为的方法: 有什么意义吗?这是否意味着输入可能是? 如果没有注释,输入仍然可以为null,所以我猜不仅仅是吗? 问题答案: 它清楚地表明该方法接受空值,并且如果您覆盖该方法,则还应该接受空值。 它也为诸如FindBugs之类的代码分析器提供了提示。例如,如果这样的方法取消引用其参数而不先检查null,则FindBugs将发出警告。
@UniqueConstraint和@Column(unique = true)有什么区别? 例如: 和
问题内容: 在Hibernate中如何注释Blob列?到目前为止,我有一堂课,有: 问题答案: @Lob应该可以解决blob和clob(使用String作为类型)