java - @ManyToOne @OneToMany Mapping ,外键为空

标签 java hibernate orm one-to-many lombok

@Entity
@Data
@NoArgsConstructor
public class Offer {
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "user_id", referencedColumnName = "id")
    private User user;
}

@Data
@EqualsAndHashCode
@Entity
@NoArgsConstructor
public class User  {
    @OneToMany(mappedBy = "user",cascade = CascadeType.ALL,fetch=FetchType.LAZY)
    private Set<Offer> offers = new HashSet<Offer>();
}

请帮忙看看表 User 和 Offer .user_id 列中的映射是否正确......:(

最佳答案

我不确定这些是否只是实体的一部分,但为了使实体拥有一个 ID,您需要为其提供一个 ID,并将相关字段注释为 @Id。 我还使用 @GenerateValue(strategy = GenerationType.IDENTITY) 所以每个表都会获得它自己的 id (由 Hibernate 生成,当您保存新实体而不是全局 id 时不提供 id,否则假设您添加一个提供,您获得值为 x 的 id,然后添加新用户,您获得值为 x+1 的 id 等等...

@Entity
@Data
@NoArgsConstructor
public class Offer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "user_id", referencedColumnName = "id")
    private User user;

}



@Data
@EqualsAndHashCode
@Entity
@NoArgsConstructor
public class User  {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;
     @OneToMany(mappedBy = "user",cascade = CascadeType.ALL,fetch=FetchType.LAZY)
    private Set<Offer> offers = new HashSet<Offer>();
}`

关于java - @ManyToOne @OneToMany Mapping ,外键为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62044295/

相关文章:

java - simcardio 在 java 1.7 中不可用?

java - Hibernate/JPA,保存新实体,同时仅在@OneToOne 关联上设置 id

java - JPA 和 JDO 规范有什么区别?

java - 单向和双向 JPA 和 Hibernate 关联有什么区别?

JAVA:我如何检查 "protected abstract method"的范围?

java - 垃圾收集和 Apache Commons 元组对

java - Android - 将参数传递给 Android 应用程序中的 RESTful URL

java - 如何知道是什么让 hibernate 持久化对象变脏了?

java - 如何在 Hibernate 中复制 "SHOW TABLES"?

java - Hibernate 不从连接池中释放连接