[英]Spring JPA Save entity with @JoinColumn
我有两个实体
实体1
@Entity
@Table(name = "Table1")
public class Table1{
@Id
@SequenceGenerator(name = "Table1_SEQ", sequenceName = "Table1_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Table1_SEQ")
@Column(name = "seq", updatable = false, unique = true, insertable = true)
private Long seq;
@Column(name = "number", updatable = false, insertable = true)
private Long number;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "enumber", updatable = false, insertable = true)
private Table2 table2;
实体2
@Entity
@Table(name = "Table2")
public class Table2 {
@Id
@SequenceGenerator(name = "Table2_SEQ", sequenceName = "Table2_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Table2_SEQ")
@Column(name = "enumber")
private Long eNumber;
我有一个扩展JpaRepository的存储库
public interface Table1Repository extends JpaRepository<Table1, Long> {
}
当我尝试使用
Table1Repository rep;
Table1 table1; // Assume this is initialized correctly
rep.save(table1);
我收到一个Foriegn Key约束错误org.springframework.dao.DataIntegrityViolationException
表1在enumber列上具有与表2的外键关联,但是我不想在表2中插入任何内容。
如何保存到表1中?
我对Jpa不太熟悉,因此,如果您需要任何关于我所要求的说明或需要更多信息,请告诉我。
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "enumber", updatable = false, insertable = true)
private Table2 table2; // THIS IS WRONG!
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "enumber", updatable = false, insertable = true)
private Long enumberFKTable2; // THIS IS CORRECT!
//getters and setters
//First, make sure that the foreign key exists!
number enumber = entityManager.getReference(Enumber.class, enumberId);
//test
if(enumber != null){
Table 1 table1 = new Table1();
table1.setEnumber(enumber);
entityManager.persist(table1);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.