java - 如何将 GeneratedValue 与 Micronaut 和 CompositeKey 一起使用
问题描述
我正在尝试使用复合键保存实体。key 的元素之一在数据库中具有默认值,因此我不需要手动设置它。我使用@GeneratedValue
,但它不工作,因为我看到。Hibernate 仍在尝试插入null
值。
例如:
Caused by: org.postgresql.util.PSQLException:
ERROR: null value in column "unit_id" violates not-null constraint
Detail: Failing row contains (null, 1, 0, 0, BASIC)
在这一刻我已经完成了@Embeddable
所有@EmbeddedId
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Embeddable
public class UnitEntityId implements Serializable {
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "unit_id")
private Integer unitId;
@NotNull
@Column(name = "story_version_id")
private Integer storyVersionId;
}
-----------------------------------------------
import lombok.*;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@Table(name = "unit", schema = "main_v2")
public class UnitEntity {
@EmbeddedId
private UnitEntityId unitEntityId;
@NotNull
@Column(name = "point_x")
private Integer x;
@NotNull
@Column(name = "point_y")
private Integer y;
@NotNull
@NotBlank
@Column(name = "unit_type")
private String unitType;
}
UnitEntity
我试图保存的示例:
var unit = UnitEntity.builder()
.unitType("BASIC")
.x(0)
.y(0)
.unitEntityId(
UnitEntityId.builder()
.storyVersionId(1)
.build()
)
.build();
解决方案
推荐阅读
- javascript - how can i fix my javascript calculation which is not working?
- python - 如何将我自己的模块导入到一个scrapy项目中?
- css - 如何将 INSPINIA 引导程序添加到 Ember 应用程序
- php - .htaccess HTTPS 重定向工作,但 HTTPS 去 /index.php
- java - 我的外键没有被插入到数据库中,知道我做错了什么吗?
- php - 尝试在 cPanel 上运行 localhost 网站时出错
- laravel - ManyToMany with 和 whereIn
- if-statement - 如何在lua中修复“具有多条件的if语句”
- ruby-on-rails - 在 memcache 中找不到缓存键
- c# - AutoHotkey:MS Visio 的重新映射快捷方式,以将手动选择的对象对齐到顶部(就像按下:“AlignTop”)