継承したプロジェクトに取り組んでいて、問題が発生しています。私のデータベースには、センサーのテーブルがあります。センサーにはタスクを設定できます。タスクのテーブルがあります。センサーにタスクがない限り、センサーを追加および削除できます。センサーにタスクが割り当てられると、ConstraintViolationExceptionが発生します。タスクエンティティはセンサーオブジェクトへの参照を保持しており、問題はどこかにあると確信しています。センサーのDAOオブジェクトを使用してセンサーを削除し、関連するすべてのタスクを自動的に削除できるようにしたいだけです。私はこれをいじくり回していて、センサークラスに何らかのカスケードアノテーションを追加する必要があると思いますが、よくわかりません。これが私が持っているものです:
@Entity
@Table(name = "sensors")
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class Sensor {
@Id
@Column(name = "sensor_id")
private String sensorId;
@Column(name = "obs_area_wkt", length = 2048)
private String observableAreaWKT;
@Column(name = "tasking_provider")
private String taskingProvider;
@Column(name = "delivery_uri")
private String deliveryUri;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "data_service_id")
private DataService dataService;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "sensor_description")
private SensorDescription sensorDescription;
@Column(name = "observable_property")
private String observableProperty;
これがタスクオブジェクトです。
@Entity
@Table(name = "tasks")
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class Task {
@Id
@Column(name = "task_id", length=276)
private String id;
@ManyToOne(cascade = CascadeType.ALL)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name ="sensor")
private Sensor sensor;
@Type(type = "org.joda.time.contrib.hibernate.PersistentDateTime")
@Column(name = "recieved")
private DateTime received;
@Type(type = "org.joda.time.contrib.hibernate.PersistentDateTime")
@Column(name = "executed")
private DateTime executed;
@Column(name = "command_text")
@Lob
private String commandText;
@Column(name = "task_parameters")
@Lob
private String taskParameters;
@Column(name = "status")
private String status;
@Column(name = "request_status")
private String requestStatus;
@Column(name = "user_id")
private String userId;
@Column(name = "group_id")
private String groupId;