我正在创建一个数据库,保存有关其他数据库的信息,我想插入一个条目.课程如下所示:
@Entity
@Table(name = "table_info")
public class TableInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToOne
@JoinColumn(name = "database_id")
private DatabaseInfo databaseInfo;
@Column(name = "table_name", length = 255, nullable = false)
private String tableName;
@Column(name = "created_at")
private Timestamp createdAt;
// Getter Setters, etc
}
@Entity(name = "UserInfo")
@Table(
name = "UserInfo",
uniqueConstraints = {
@UniqueConstraint(name = "user_unique", columnNames = "username")
}
)
public class UserInfo {
@Id
@SequenceGenerator(
name = "userinfo_sequence",
sequenceName = "userinfo_sequence",
allocationSize = 1
)
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "userinfo_sequence"
)
@Column(
name = "id",
updatable = false
)
private Long id;
@Column(
name = "masterID",
updatable = true,
nullable = false
)
private Long masterID;
@Column(
name = "username",
updatable = false,
nullable = false,
columnDefinition = "TEXT"
)
private String username;
@Column(
name = "email",
updatable = false,
nullable = false,
columnDefinition = "TEXT"
)
private String email;
@Column(
name = "password_hash",
updatable = true,
nullable = false,
columnDefinition = "TEXT"
)
private String password_hash;
// Getter Setters, etc
}
@Entity
@Table(name = "ownership_details")
public class OwnershipDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ownership_details_id")
private Long id;
@Column(name = "access_level")
private Integer access_level;
@OneToOne(
cascade = CascadeType.MERGE,
fetch = FetchType.LAZY,
orphanRemoval = true
)
@JoinColumn(name = "user_id", referencedColumnName = "id")
private UserInfo user;
@OneToOne(
cascade = CascadeType.MERGE,
fetch = FetchType.LAZY,
orphanRemoval = true
)
@JoinColumn(name = "table_id", referencedColumnName = "id")
private TableInfo tableInfo;
}
以下是我的Ownership Detail存储库:
@Repository
public interface OwnershipDetailsRepository extends JpaRepository<OwnershipDetails, Long> {
}
每当我try 插入新的Ownership Detail对象时,我只需使用:
ownershipDetailsRepository.save(ownershipDetails);
个
每当我这样做时,我都会收到一个错误: not-null property references a null or transient value : project.BackEnd.User.UserInfo.email个 这显然意味着它正在try 插入一个新的userInfo对象,而不是创建对已经存在的对象的引用.我的问题是,如何才能强制它创建引用,而不是try 在数据库中创建另一个实体.