jpa class是这样的:
public class JpaAlertConfiguration{
...
@OneToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "alert_type_id", nullable = false, referencedColumnName = "id", insertable = false, updatable = false)
private JpaAlertType alertType;
}
从此类方法调用Create Entity。
@Override
@Transactional
public JpaAlertConfiguration createEntity(JpaAlertConfiguration entity) throws Exception
{
getAuthorizer().checkCreate(ENTITY_NAME);
validateFields(entity);
getAuthorizer().checkAccountAccess(entity.getAccount().getId(), null);
entity = attachAssociatedEntities(entity);
// entity.setStatusColumns(new StatusColumns().setStatus(ResourceStatus.Disabled));
entity = super.createEntity(entity);
entity = transformResult(entity);
return entity;
}
我确保在调用此行entity = super.createEntity(entity);
之前,填充JpaAlertType id值,这只是" alert_type_id" alertConfig表。
我得到例外:
引起:org.postgresql.util.PSQLException:错误:列中的空值" alert_type_id"违反非空约束 详细信息:失败的行包含(3,速度警报,超速警报,5,t,null,启用,0,2016-09-06 17:56:30.556 + 05:30,2016-09-06 17:56:30.58+ 05:30,2016-09-06 17:56:30.556 + 05:30,null,f,f)。
请建议
答案 0 :(得分:0)
我认为您缺少JPA持久订单,请参阅以下关于JPA one-to-one insert的链接,我希望这可能有所帮助。
答案 1 :(得分:0)
问题是解决的: 实际上在我的场景中我调用了泛型createEntity方法。不确定,但我刚从中删除了所有复杂的注释 JPAAlertConfiguration类中的alertType变量
@OneToOne(optional = false)
@JoinColumn(name = "alert_type_id")
private JpaAlertType alertType;
它有效。不管怎样,谢谢