Ahoj.

Nez si zacnem trieskat hlavu o stenu, poprosim o radu s nasledovnym:

Mam 2 entity, jedna dedi od druhej. Chcem spravit update pomocou hql, ale koncim na velmi podivnom sql a exception. Samozrejme to mozem vyriesit cistym sql, ale vrta mi to v hlave a neda mi to...

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Parent implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long parent_id;

  // private string name, note, ....
}


@Entity
@PrimaryKeyJoinColumn(name="parent_id")
public class Child extends Parent implements Serializable {
  private Double amount;
}


Vygenerovana schema vyzera nasledovne:

- table parent ( parent_id bigint primary key, .... )
- table child ( parent_id bigint primary key not null, amount double );
- constraint na parent_id

Tabule mam naplnene. Teraz chcem spravit update nad Child.amount.

Pouzivam springovsky hibernate template nasledovne:

        Query q = sessionFactory.getCurrentSession().createQuery(
"update Child c set c.amount = c.amount + :how where c.parent_id = :id");
        q.setParameter("id", 1);
        q.setParameter("how", 100);
        q.executeUpdate();

Nasleduje mne nepochopitelny bordelo-sql command:

"insert into HT_Child select parenton0_.parent_id as parent_id from Child
parenton0_ inner join Material parenton0_1_ on parenton0_.parent_id=parenton0_1_.parent_id where parent_id=?"

namiesto jednoducheho "update child set amount = amount + ? where parent_id = ?",

nasledovany exception: jdbcsqlexception "Ambiguous column name "PARENT_ID""

Cosi podobne som vygooglil a ak to spravne chapem, je to vlastnost ( bug ), ale rad by som si overil ze nie je chyba v mojom prijimaci...

http://opensource.atlassian.com/projects/hibernate/browse/HHH-1657


--
Diky
D

Odpovedet emailem