[Hibernate-JIRA] Created: (HHH-3958) Superfluous generated updates cause Violation of UNIQUE KEY constraint
by Guenther Demetz (JIRA)
Superfluous generated updates cause Violation of UNIQUE KEY constraint
----------------------------------------------------------------------
Key: HHH-3958
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3958
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.3.1
Environment: 3.3.1 GA, SQLServer 2008
Reporter: Guenther Demetz
Priority: Minor
Attachments: Testcase.jar
When deleting a entire closure of objects associated over @ManyToOne within one single transaction, then on commit
the FlushEventListener creates update statements on objects which are going to be deleted anyway.
These update statements seems not only be useless,
in certain scenarios they lead to Constraint Violation Exceptions, see the example here:
@Entity
public class A {
public A() { }
@Id @GeneratedValue
private long oid;
}
@Entity
@Table(uniqueConstraints = {@UniqueConstraint(columnNames={"assA_oid"})})
public class B {
public B() {};
@Id @GeneratedValue
private long oid;
@javax.persistence.ManyToOne
protected A assA = null;
}
A a1 = new A(); em.persist(a1);
A a2 = new A(); em.persist(a2);
B b1 = new B();
b1.assA = a1; // set unique association
B b2 = new B();
b2.assA = a2; // set unique association
em.persist(b1);
em.persist(b2);
em.getTransaction().commit();
em.getTransaction().begin();
em.remove(a1);
em.remove(a2);
em.remove(b1);
em.remove(b2);
em.getTransaction().commit();
// p6spy report:
// update B set assA_oid='',version=0 where oid=1 and version=0
// update B set assA_oid='',version=0 where oid=2 and version=0 --> this raises "Violation of UNIQUE KEY constraint on all DB's which don't allow multiple null values in a unique index
See testcase in attachment
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 1 month
[Hibernate-JIRA] Created: (HHH-4030) Implement support for native recursive query functionality of popular DBMSes
by David Cracauer (JIRA)
Implement support for native recursive query functionality of popular DBMSes
----------------------------------------------------------------------------
Key: HHH-4030
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4030
Project: Hibernate Core
Issue Type: New Feature
Components: core, query-hql, query-sql
Environment: Hibernate 3.3.2, MSSQL
Reporter: David Cracauer
We have a couple of areas in our system where need to load tree structures from our database. These trees can be very deep (often 20+ levels). SQL Server 2005 introduced Common Table Expressions, a kind of in-line view that can be used recursively.
These allow us to quickly get a result set like this:
id, label, parentId
1, foo, null
2, foo2, 1
3, foo3, 2
4, foo4, 2
5, foo5, 4
6, foo6, 1
>From a tree like this:
[1, foo]
|
| -[2, foo2]
| | - [3, foo3]
| | - [4, foo4]
| | - [5, foo5]
|- [6, foo6]
using a query like this (not tested):
with MyCTE(
id,
label,
parentId)
as
( select n.id, n.label, n.parentid
from Node n
UNION ALL
select c.id, c.label, c.parentId
from MyCTE c
inner join Node n on n.id=c.parentId)
select * from MyCTE
It happens many times more quickly than we've been able to load the graphs with Hibernate, even using batching etc.
We've tried using hibernate's built in native sql support without success. The alias injection breaks the Common Table Expression definition ( with MyCTE ), as it is a view definition and doesn't allow for the 'id as id_276' syntax, rather requiring just a column name.
I know that there are several other major DBMSes that support recursive querying now. Is there a way to have support for this functionality in hibernate core?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 1 month