使用JPA删除实体的问题 [英] Problem removing entity with JPA
本文介绍了使用JPA删除实体的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
更新
我的朋友做了相同的代码行,他的行正常工作。会是什么呢?我使用NetBeans 7.0.1,他的是6.9.1。我的GlassFish是3.1,他是3.0.1
My friend did the same lines of code and his lines just worked. What could it be? I use NetBeans 7.0.1 and his is 6.9.1. My GlassFish is 3.1 and his is 3.0.1
END OF UPDATE
@Inheritance(strategy= InheritanceType.JOINED)
@Entity
@Table(name = "vehicle")
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.INTEGER)
@NamedQueries({
@NamedQuery(name = "Vehicle.findAll", query = "SELECT v FROM Vehicle v")})
public class Vehicle implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@JoinColumn(name = "color_id")
@ManyToOne(optional = false)
private Color color;
public Vehicle() {
}
//Getters and Setters
}
---
@Entity
@Table(name = "car")
@DiscriminatorValue("1")
@NamedQueries({
@NamedQuery(name = "Car.findAll", query = "SELECT c FROM Car c")})
public class Car extends Vehicle implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "airbag")
private Boolean airbag;
public Car() {
}
//Getters and Setters
}
当我试图移除一辆汽车时,它会抛出异常并且在Stacktrace中有一个UPDATE查询,如果我正在尝试删除。
When I'm trying to remove a car it thorws an Exception and in the Stacktrace has a UPDATE query which is pretty weird if I'm trying to remove.
你们对这里可能发生的事情有什么了解吗?
Do you guys have any idea of what might be going on here?
Car car = em.find(Car.class, id);
em.remove(car);
Stack:
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'color_id' cannot be null
Error Code: 1048
Call: UPDATE vehicle SET color_id = ? WHERE (id = ?)
bind => [2 parameters bound]
Query: DeleteObjectQuery(br.com.something.entity.Vehicle[ id=3 ])
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:840)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:906)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:592)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535)
at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1702)
at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.updateObject(DatasourceCallQueryMechanism.java:749)
推荐答案
也许你需要一个CascadeType关于汽车和颜色之间的关系?
Perhaps you need a CascadeType on the relation between car and color?
这篇关于使用JPA删除实体的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文