Java 休眠问题:字段“&引用;不';没有默认值

Java 休眠问题:字段“&引用;不';没有默认值,java,mysql,hibernate,Java,Mysql,Hibernate,我目前正在Spring环境中使用Hibernate,我面临一些问题 事实上,我有3个实体: 临界点(id,描述) 重力(id,描述) 事件(id、描述) 我正在努力创建第四个表,其中包含其他三个表的外键,如Crit_Grav_Occ(idC、idG、idO) Criticite @Entity @Table(name = "criticite") @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Document(i

我目前正在Spring环境中使用Hibernate,我面临一些问题

事实上,我有3个实体:

  • 临界点(id,描述)
  • 重力(id,描述)
  • 事件(id、描述)
我正在努力创建第四个表,其中包含其他三个表的外键,如Crit_Grav_Occ(idC、idG、idO)

Criticite

@Entity
@Table(name = "criticite")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "criticite")
public class Criticite implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @Column(name = "criticite")
    private Integer criticite;

    @ManyToMany
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @JoinTable(name = "criticite_gravite_occurrence",
               joinColumns = @JoinColumn(name="criticites_id", referencedColumnName="id"),
               inverseJoinColumns = @JoinColumn(name="occurrences_id", referencedColumnName="id"))
    private Set<Occurrence> occurrences = new HashSet<>();

    @ManyToMany
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @JoinTable(name = "criticite_gravite_occurrence",
               joinColumns = @JoinColumn(name="criticites_id", referencedColumnName="id"),
               inverseJoinColumns = @JoinColumn(name="gravites_id", referencedColumnName="id"))
    private Set<Gravite> gravites = new HashSet<>();
@Entity
@Table(name = "gravite")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "gravite")
public class Gravite implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @Column(name = "description")
    private String description;

    @ManyToMany(mappedBy = "gravites", cascade = {CascadeType.ALL})
    @JsonIgnore
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<Criticite> criticites = new HashSet<>();
@实体
@表(name=“criticite”)
@缓存(用法=缓存并发策略。非严格读写)
@文件(indexName=“criticite”)
公共类实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@列(name=“criticite”)
私有整数临界值;
@许多
@缓存(用法=缓存并发策略。非严格读写)
@可接合(name=“临界重力发生”,
joinColumns=@JoinColumn(name=“criticites\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“executions\u id”,referencedColumnName=“id”))
私有集出现次数=新HashSet();
@许多
@缓存(用法=缓存并发策略。非严格读写)
@可接合(name=“临界重力发生”,
joinColumns=@JoinColumn(name=“criticites\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“graveles\u id”,referencedColumnName=“id”))
私有集重力=新HashSet();
引力

@Entity
@Table(name = "criticite")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "criticite")
public class Criticite implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @Column(name = "criticite")
    private Integer criticite;

    @ManyToMany
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @JoinTable(name = "criticite_gravite_occurrence",
               joinColumns = @JoinColumn(name="criticites_id", referencedColumnName="id"),
               inverseJoinColumns = @JoinColumn(name="occurrences_id", referencedColumnName="id"))
    private Set<Occurrence> occurrences = new HashSet<>();

    @ManyToMany
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @JoinTable(name = "criticite_gravite_occurrence",
               joinColumns = @JoinColumn(name="criticites_id", referencedColumnName="id"),
               inverseJoinColumns = @JoinColumn(name="gravites_id", referencedColumnName="id"))
    private Set<Gravite> gravites = new HashSet<>();
@Entity
@Table(name = "gravite")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "gravite")
public class Gravite implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @Column(name = "description")
    private String description;

    @ManyToMany(mappedBy = "gravites", cascade = {CascadeType.ALL})
    @JsonIgnore
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<Criticite> criticites = new HashSet<>();
@实体
@表(name=“重力”)
@缓存(用法=缓存并发策略。非严格读写)
@文件(indexName=“重力”)
公共类重力实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@列(name=“description”)
私有字符串描述;
@许多(mappedBy=“gravites”,cascade={CascadeType.ALL})
@杰索尼奥雷
@缓存(用法=缓存并发策略。非严格读写)
私有集=新HashSet();
发生

@Entity
@Table(name = "occurrence")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "occurrence")
public class Occurrence implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @Column(name = "description")
    private String description;

    @ManyToMany(mappedBy = "occurrences", cascade = {CascadeType.ALL})
    @JsonIgnore
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<Criticite> criticites = new HashSet<>();
@实体
@表(name=“事件”)
@缓存(用法=缓存并发策略。非严格读写)
@文件(indexName=“事件”)
公共类引用实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@列(name=“description”)
私有字符串描述;
@ManyToMany(mappedBy=“executions”,cascade={CascadeType.ALL})
@杰索尼奥雷
@缓存(用法=缓存并发策略。非严格读写)
私有集=新HashSet();
现在…当我想用保存自CrudePository保存一个criticite时,我得到了一个

原因:java.sql.SQLException:字段“事件\u id”没有 默认值

上面奇怪的事情是:

休眠:插入临界点重力事件(临界点id, 重力(id)值(?,)

而我应该预料到这一点

休眠:插入临界点重力事件(临界点id, 重力值(?,,?)


欢迎任何帮助:)

我解决了我的问题!我实际上是从头开始的,我发现(感谢hibernate论坛),为了拥有复合主键,我必须用@EmbeddeId进行不同的设计。我解决了我的问题!我实际上是从头开始的,我发现了(感谢hibernate论坛)我必须用@EmbeddeId进行不同的设计,以获得复合主键。