[英]Entity with one-to-many relationships does not record foreign key in table
我在sql server中有2個數據庫,在這兩個數據庫中,我具有相同的表“實體”和“字段”,並具有一對多關系。 我想將記錄保存到兩個數據庫中的那些表中,在第一個數據庫中我具有外鍵,但是在第二個數據庫中,JPA不制作外鍵。
@javax.persistence.Entity
@Table(name = "entities")
public class Entity{
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "entity_id")
private List<Field> fieldList;
...
}
@javax.persistence.Entity
@Table(name = "fields")
public class Field {
@Id @Column(name = "id")
private String id;
...
}
我在春季應用程序contex中創建了2個實體“ Entity”,“ Field”,創建了兩對bean:
DriverManagerDataSource, LocalContainerEntityManagerFactoryBean, JpaTransactionManager
DAO級別:
public class EntityDao {
@PersistenceContext(unitName = "application")
private EntityManager entityManager;
@Transactional("transactionManager")
public Entity addEntity(Entity entity){
entityManager.persist(entity);
}
}
public class PreviousStateEntityDao {
@PersistenceContext(unitName = "administration")
private EntityManager entityManager;
@Transactional("transactionManagerAdministration")
public Entity addPreviousStateEntity(Entity entity){
entityManager.persist(entity);
}
}
因此,當我嘗試保留實體時,在第一個數據庫中我有外鍵,在第二個數據庫中我沒有外鍵。 我的服務如下:
public class EntityServiceImpl implements EntityService {
@Autowired
EntityDao entityDao;
@Autowired
PreviousStateEntityDao previousStateEntityDao;
public void addEntity(Entity entity) {
previousStateEntityDao.addPreviousStateEntity(entity);
entityDao.addEntity(entity);
}
在這種情況下,在保留了先前狀態的數據庫(數據庫“ administration”,表“ entities”,“ fields”)中,我將具有外鍵,但是在主數據庫“ apllication”中,我保留了實體,而我在表中沒有默認鍵'fields',JPA在此處寫入null。 我該如何解決?
您可以通過這種方式進行。 在您的控制器中以這種方式使用它。
@PostMapping("/entity")
public Entity postEntity(@RequestBody Entity entity) {
if( entity.getFieldList().size() > 0 )
{
entity.getFieldList().stream().forEach( fieldItem -> {
fieldItem.setEntity( entity );
} );
}
return entity;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.