Блокирование обновления или вставки сущности при использовании Cascade в Hibernate
У меня есть объект EntHesaplasma, этот объект связан с объектом EntCariHareketler. У меня есть внешний ключ в сущности EntHesaplasma для EntCariHareketler. Я хочу установить отношения между ними, но я не хочу обновлять, вставлять или удалять операции над объектом EntCariHareketler. Только я хочу прочитать операцию над второй сущностью (EntCariHareketler). Я пробовал каскадные типы, но не смог добиться успеха.
Ниже вы можете увидеть часть моих сущностей
@Entity
@Table(name = "XOZ_HESAPLASMA")
public class EntHesaplasma {
Integer hesaplasmaid;
EntCariHareketler carihareket;
String hesaplasmagrup;
@Id
@GeneratedValue
@Column(name = "hesaplasmaid", unique = true, nullable = false)
public Integer getHesaplasmaid() {
return hesaplasmaid;
}
public void setHesaplasmaid(Integer hesaplasmaid) {
this.hesaplasmaid = hesaplasmaid;
}
@OneToOne(fetch= FetchType.LAZY)
@JoinColumn(name="carihareketid")
public EntCariHareketler getCarihareket() {
return carihareket;
}
public void setCarihareket(EntCariHareketler carihareket) {
this.carihareket = carihareket;
}
@Column(name="hesaplasmagrup")
public String getHesaplasmagrup() {
return hesaplasmagrup;
}
public void setHesaplasmagrup(String hesaplasmagrup) {
this.hesaplasmagrup = hesaplasmagrup;
}
И это сущность EntCarihareketler
@Entity
@Table(name = "CARI_HESAP_HAREKETLERI")
public class EntCariHareketler {
private Integer cha_RECno;
@Id
@GeneratedValue
@Column(name = "cha_recno", unique = true, nullable = false)
public Integer getCha_RECno() {
return cha_RECno;
}
public void setCha_RECno(Integer cha_RECno) {
this.cha_RECno = cha_RECno;
}
Когда я хочу сохранить объект enthesaplasma, я не хочу обновлять или вставлять сущность entCariHareketler, я получаю исключение, например, что сущность entcarihareketler не может быть вставлена. Но я не хочу вставлять объект entcarihareketler. hibernate попытайтесь вставить эту сущность, (кстати, в сущности entcarihareket я не использую некоторые поля, которые являются частью первичных ключей. Я использую только cha_Recno в качестве первичного ключа. Это важное поле в составных первичных ключах.)
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
EntHesaplasma hesaplasma= new EntHesaplasma();
hesaplasma.setHesaplasmagrup("a record");
// related entcarihareketler entity
EntCariHareketler entCariHareketler= new EntCariHareketler();
// we set entcarihareketler id (1212) as primary key )
entCariHareketler.setCha_RECno(1212);
tx=session.beginTransaction();
session.save(hesaplasma);
tx.commit();
} catch (HibernateException e) {
if (tx != null)tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
1 ответ
Если вы никогда не хотите изменять
EntCariHareketler
Вы можете просто аннотировать его с помощью @Immutable.Если ваша сущность изменчива, но вы хотите отключить обновления с другой стороны, вам нужно установить
false
insertable
а такжеupdatable
@JoinColumn
атрибут:@OneToOne(fetch= FetchType.LAZY) @JoinColumn(name="carihareketid", insertable = false, updatable = false) public EntCariHareketler getCarihareket() { return carihareket; }