我有很多表,但它们有共同的自动增量。例如,我创建了我的第一个用户,它的id为1,然后我创建了一条消息,它的id为2,然后我创建了一条对消息的注释,它的id为3,但它的id应该为1,因为我没有任何其他注释或消息
我的用户:
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "usr")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "role")
private Role role;
@Column(name = "email")
private String email;
@Column(name = "status")
private Status status;
// @OneToMany(mappedBy = "author")
// private List<Message> messages;
// @OneToMany(mappedBy = "author")
// private List<Comment> comments;
@OneToOne
@JoinColumn(name = "gender_id")
private Gender gender;
@OneToOne
@JoinColumn(name = "address_id")
private Address address;
@ManyToMany
@JoinTable(
name = "user_subscriptions",
joinColumns = @JoinColumn(name = "channel_id") ,
inverseJoinColumns = @JoinColumn(name = "subscriber_id"))
private Set<User> subscribers;
@ManyToMany
@JoinTable(
name = "user_subscriptions",
joinColumns = @JoinColumn(name = "subscriber_id") ,
inverseJoinColumns = @JoinColumn(name = "channel_id"))
private Set<User> subscriptions;
@OneToOne
@JoinColumn(name = "file_id")
private FileEntity fileEntity;
}
我的信息:
@Getter
@Setter
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "message")
public class Message {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "text")
private String text;
@Column(name = "tag")
private String tag;
@ManyToOne
@JoinColumn(name = "user_id")
private User author;
@Column(name = "header")
private String header;
@Column(name = "like_count")
private Integer likeCount = 0;
@ManyToMany
@JoinTable(
name = "message_likes",
joinColumns = { @JoinColumn(name = "message_id") },
inverseJoinColumns = { @JoinColumn(name = "user_id")}
)
private Set<User> likes;
@OneToOne
@JoinColumn(name = "file_id")
private FileEntity fileEntity;
}
我的评论是:
@Data
@Entity
@Table(name = "comment")
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "header")
private String header;
@Column(name = "text")
private String text;
@Column(name = "like_count")
private Integer likeCount = 0;
@ManyToOne()
@JoinColumn(name = "user_id")
private User author;
@ManyToOne()
@JoinColumn(name = "message_id")
private Message message;
@ManyToMany
@JoinTable(
name = "comment_likes",
joinColumns = { @JoinColumn(name = "comment_id") },
inverseJoinColumns = { @JoinColumn(name = "user_id")}
)
private Set<User> likes;
}
我将感谢任何帮助。
hibernate的AUTO
生成策略是SEQUENCE
,它为所有实体创建并使用一个公共数据库序列。
要获得所需的行为,可以为每个表指定专用序列,例如,如下所述:https://stackoverflow.com/a/4561233
请注意,出于性能原因,hibernate可能会配置为一次保留多个ID,因此即使每个实体都有一个专用的序列,ID中也可能存在漏洞。
为了减少安装工作量(以及存在ID间隙的可能性),您还可以切换到IDENTITY
,它在内部也为表创建并使用专用序列。然而,实体ID只有在插入时才被分配,因此可能存在性能缺陷(因为hibernate不能延迟插入,例如直到事务结束)。
https://thorben-janssen.com/jpa-generate-primary-keys/
10.10. 公共问题的解决方案 10.10.1. 对一个特定的 DataSource 使用错误的事务管理器 开发者需要按照需求仔细地选择正确的 PlatformTransactionManager 实现。理解Spring的事务抽象如何与JTA全局事务一起工作是非常重要的。使用得当,就不会有任何冲突:Spring仅仅提供一个直观的、可移植的抽象层。 如果你使用全局事务,你 必须 为你的所有事务操作
当我尝试运行应用程序时,它工作正常。但是当我构建签名apk时,出现了错误 失败:构建失败,出现异常。 问题:任务“:app:lintVitalRelease”的执行失败 无法解析配置“:image_picker_android:调试单元测试运行时类路径”的所有项目。无法转换 bcprov-jdk15on-1.68.jar (org.bouncycastle:bcprov-jdk15on:1.68)
问题内容: 我想有一个header.html,它定义我所有网页的标题如何。如何将此header.html插入顶部的其他网页? 可能会有更好的方法来实现要共享的公共标头。由于我仍然认为自己是html的新手(但不适合编程),因此我愿意接受更好的建议。 谢谢。 编辑:有用的答复提到了使用PHP。但是,我使用AngularJS作为前端,而我的PHP后端仅仅是一个纯REST服务器。我更喜欢用AngularJ
目前,我正在学习Spring启动课程。然而,从昨天开始,当我通过VS代码启动我的主类时,我就面临这个问题:“com.training.training.Service.ProduitServiceImpl中的字段pr需要一个无法找到的“com.training.training.Repos.ProduitRepository”类型的bean。”所以我请求一些帮助来解决这个问题。 以下是stackt
问题内容: 出于研究目的,我想列出npm上 所有 可用的软件包。我怎样才能做到这一点? https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get- all上的 一些旧文档都提到了一个曾经工作过的端点,但是http://registry.npmjs.org/ -/ 现在全部返回。 问题答案: http://blog.np