Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存实体时未更新中间表_Java_Spring_Postgresql - Fatal编程技术网

Java 保存实体时未更新中间表

Java 保存实体时未更新中间表,java,spring,postgresql,Java,Spring,Postgresql,我有一套用户和会议实体。我实现了一种方法,在该方法中,我将用户分配到会议并保存它。但是,当我保存会议时,中间表Attention_表不会更新 我的数据库erd图示例: 我的实体: @Entity @Table(name = "user_table", schema = "public") public class User { @Id @Column(name = "user_id") @GeneratedValue(strat

我有一套用户和会议实体。我实现了一种方法,在该方法中,我将用户分配到会议并保存它。但是,当我保存会议时,中间表Attention_表不会更新

我的数据库erd图示例:

我的实体:

 @Entity
 @Table(name = "user_table", schema = "public")
 public class User {
@Id
@Column(name = "user_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long user_id;

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

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

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

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

@Column(name = "confirmed")
private boolean confirmed;

@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.DETACH}, fetch = FetchType.LAZY)
@JoinTable(name = "attendance_table",
        joinColumns = {
                @JoinColumn(name = "user_id", referencedColumnName = "user_id",
                        nullable = false, updatable = false)},
        inverseJoinColumns = {
                @JoinColumn(name = "conference_id", referencedColumnName = "conference_id",
                        nullable = false, updatable = false)})
private Collection<Conference> conferences = new HashSet<>();




 @Entity
 @Table(name = "conference_table", schema = "public")
 public class Conference {

@Id
@Column(name = "conference_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long conference_id;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User creator ;

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

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

@Column(name = "startConference")
private Date startConference;

@Column(name = "endConference")
private Date endConference;

@ManyToMany(mappedBy = "conferences", fetch = FetchType.LAZY)
private Collection<User> students;
@实体
@表(name=“user\u Table”,schema=“public”)
公共类用户{
@身份证
@列(name=“user\u id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
专用长用户标识;
@列(name=“name”)
私有字符串名称;
@列(name=“username”)
私有字符串用户名;
@列(name=“password”)
私有字符串密码;
@列(name=“email”)
私人字符串电子邮件;
@列(name=“已确认”)
私有布尔确认;
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.DETACH},fetch=FetchType.LAZY)
@JoinTable(name=“考勤表”,
joinColumns={
@JoinColumn(name=“user\u id”,referencedColumnName=“user\u id”,
null=false,updateable=false)},
反向连接列={
@JoinColumn(name=“conference\u id”,referencedColumnName=“conference\u id”,
nullable=false,updateable=false)})
私有集合会议=新HashSet();
@实体
@表(name=“conference\u Table”,schema=“public”)
公开课会议{
@身份证
@列(name=“会议id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长时间会议;
@OneToOne(级联=级联类型.ALL)
@JoinColumn(name=“user\u id”)
私人用户创建者;
@列(name=“name”)
私有字符串名称;
@列(name=“description”)
私有字符串描述;
@列(name=“startConference”)
私人日期开始会议;
@列(name=“endConference”)
非公开会议;
@ManyToMany(mappedBy=“conferences”,fetch=FetchType.LAZY)
私人收藏学生;

有什么想法吗?如果你需要任何额外的信息,我可以更新这个问题。提前谢谢!

这是一个有趣的修复方法。我在搞乱用户和会议类,找到了一个解决方案

我必须交换@manytomy的实现,这两个类中有许多都可以使用

我的用户类现在看起来像:

@Entity
@Table(name = "user_table", schema = "public")
public class User {

@Id
@Column(name = "user_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long user_id;

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

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

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

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

@Column(name = "confirmed")
private boolean confirmed;

@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.DETACH}, fetch = FetchType.EAGER)
@JoinTable(
        name = "user_role_table",
        joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "user_id"),
        inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "role_id"))
private Collection<Role> roles = new HashSet<>();

@ManyToMany(mappedBy = "students", fetch = FetchType.LAZY)
private Collection<Conference> conferences;
@实体
@表(name=“user\u Table”,schema=“public”)
公共类用户{
@身份证
@列(name=“user\u id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
专用长用户标识;
@列(name=“name”)
私有字符串名称;
@列(name=“username”)
私有字符串用户名;
@列(name=“password”)
私有字符串密码;
@列(name=“email”)
私人字符串电子邮件;
@列(name=“已确认”)
私有布尔确认;
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.DETACH},fetch=FetchType.EAGER)
@可接合(
name=“用户角色表”,
joinColumns=@JoinColumn(name=“user\u id”,referencedColumnName=“user\u id”),
inverseJoinColumns=@JoinColumn(name=“role\u id”,referencedColumnName=“role\u id”))
私有集合角色=新HashSet();
@ManyToMany(mappedBy=“students”,fetch=FetchType.LAZY)
私人收藏会议;
还有我的会议课:

@Entity
@Table(name = "conference_table", schema = "public")
public class Conference {

@Id
@Column(name = "conference_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long conference_id;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User creator ;

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

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

@Column(name = "startConference")
private Date startConference;

@Column(name = "endConference")
private Date endConference;

@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.DETACH}, fetch = FetchType.LAZY)
@JoinTable(name = "attendance_table",
        joinColumns = {
                @JoinColumn(name = "conference_id", referencedColumnName = "conference_id",
                        nullable = false, updatable = false)},
        inverseJoinColumns = {
                @JoinColumn(name = "user_id", referencedColumnName = "user_id",
                        nullable = false, updatable = false)})
private Collection<User> students = new HashSet<>();
@实体
@表(name=“conference\u Table”,schema=“public”)
公开课会议{
@身份证
@列(name=“会议id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长时间会议;
@OneToOne(级联=级联类型.ALL)
@JoinColumn(name=“user\u id”)
私人用户创建者;
@列(name=“name”)
私有字符串名称;
@列(name=“description”)
私有字符串描述;
@列(name=“startConference”)
私人日期开始会议;
@列(name=“endConference”)
非公开会议;
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.DETACH},fetch=FetchType.LAZY)
@JoinTable(name=“考勤表”,
joinColumns={
@JoinColumn(name=“conference\u id”,referencedColumnName=“conference\u id”,
null=false,updateable=false)},
反向连接列={
@JoinColumn(name=“user\u id”,referencedColumnName=“user\u id”,
nullable=false,updateable=false)})
私有集合students=newhashset();
仍然不确定为什么它是这样工作的,而不是相反。如果有人知道,请解释