gpt4 book ai didi

java - 如何使用 Hibernate 和 postgresql 为一对多关系实现每个表的自动递增 id 字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:02 27 4
gpt4 key购买 nike

我有 4 个实体一对多消息实体:

@Entity
@Table(name = "Messages")
public class Message {
...
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "messagesounds_id")
private Sound sound;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "messagevibrations_id")
private Vibration vibration;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "messagecolors_id")
private Color color;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "messageplatforms_id")
private Platform platform;
...
}

而其他 4 个实体看起来像这样:

@Entity
@Table( name = "MessageSounds" , uniqueConstraints=@UniqueConstraint(columnNames = {"name"}))
public class Sound {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

@OneToMany(cascade={CascadeType.ALL})
@JoinColumn(name="messagesounds_id")
private Set<Message> message;
...
}

我可以成功创建引用 4 个引用表的第一条记录的第一条消息记录。但是 postgresql db 中的消息表是这样的:

 id |...| messagesounds_id | messagevibrations_id | messagecolors_id | messageplatforms_id |
1 |...| 2 | 3 | 4 | 5 |

我想让引用的4个表的每个主键都自增,这样message表的第一条记录应该是这样的:

 id |...| messagesounds_id | messagevibrations_id | messagecolors_id | messageplatforms_id |
1 |...| 1 | 1 | 1 | 1 |

如何使用注解实现这一点?

最佳答案

好的,来自 Hibernate use of PostgreSQL sequence does not affect sequence tablea_horse_with_no_nameless 引用,

我设法像这样设置每个引用表的自动递增主键:

@Id
@SequenceGenerator(name="pk_sequence",sequenceName="messagesounds_id_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence")
private int id;

非常感谢所有的研究。

关于java - 如何使用 Hibernate 和 postgresql 为一对多关系实现每个表的自动递增 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17020544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com