Java Hibernate ConstraintViolationException:在删除时无操作在更新时无操作
我正在使用Java、Spring、Hibernate和JPAJava Hibernate ConstraintViolationException:在删除时无操作在更新时无操作,java,mysql,spring,hibernate,jpa,Java,Mysql,Spring,Hibernate,Jpa,我正在使用Java、Spring、Hibernate和JPA +--------------+ +-----------------+ +-------------------+ | map_range | | map_location | | location_map | +--------------+ +-----------------+ +-------------------+ | ID
+--------------+ +-----------------+ +-------------------+
| map_range | | map_location | | location_map |
+--------------+ +-----------------+ +-------------------+
| ID | | MAP_ID | | ID |
| RANGE | | LOC_ID | | LATITUDE |
| RADIUS | | | | LONGITUDE |
+--------------+ +-----------------+ +-------------------+
MapRange.java
@Entity
@Table(name = "map_range")
@XmlRootElement(name = "map_range")
public class MapRange extends AbstractDomain<Long> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Size(min = 1, max = 100)
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "RADIUS", nullable = false)
private Integer radius;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@JoinTable(name = "map_location", joinColumns = {
@JoinColumn(name = "MAP_ID", referencedColumnName = "ID") }, inverseJoinColumns = {
@JoinColumn(name = "LOC_ID", referencedColumnName = "ID", unique = true) })
private Set<LocationMap> locations;
@Entity
@Table(name = "location_map")
@XmlRootElement(name = "location_map")
public class LocationMap extends AbstractDomain<Integer> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID", unique = true, nullable = false)
private Integer id;
@Column(name = "LATITUDE", nullable = false)
private BigDecimal latitude;
@Column(name = "LONGITUDE", nullable = false)
private BigDecimal longitude;
我得到以下错误:
SQL错误:1452,SQLState:23000
11:45:11578错误[org.hibernate.engine.jdbc.spi.SqlExceptionHelper](默认任务-5)
无法添加或更新子行:外键约束失败
(ebdb
map\u location
,约束fk\u map\u loc\u map
外键
(LOC\u ID
)删除时参考map\u range
(ID
)更新时不执行任何操作
(无行动)
11:45:11578信息[org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl](默认值
任务5)HH000010:批处理发布时,它仍然包含JDBC
声明
11:45:11579错误[org.hibernate.internal.exceptionApperstandardimpl](默认任务5)
HH000346:托管刷新期间出错
[org.hibernate.exception.ConstraintViolationException:无法
执行语句]
如果有人能就我如何解决此问题提供一些建议,我将非常感谢您的帮助。您如何创建实体的实例?您只需向我们显示您正在调用
merge
操作,但不显示它们是如何创建和映射的。@Richard您使用的BeanUtils
是什么?
super.merge(mapRange);
BeanUtils.copyProperties(entity, attached);
entityManager.setFlushMode(FlushModeType.COMMIT);
attached = entityManager.merge(attached);
11:45:11,577 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-5)