[Hibernate-JIRA] Created: (HBX-1173) hbm2ddl generates bad sql schema when forbidden column name is used on Oracle
by Lorber Sebastien (JIRA)
hbm2ddl generates bad sql schema when forbidden column name is used on Oracle
-----------------------------------------------------------------------------
Key: HBX-1173
URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-1173
Project: Hibernate Tools
Issue Type: Improvement
Environment: 16:04:20,778 INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.3.0.GA
16:04:20,789 INFO org.hibernate.cfg.Environment - Hibernate 3.2.7
16:04:20,808 INFO org.hibernate.cfg.Environment - hibernate.properties not found
16:04:20,812 INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib
16:04:20,815 INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
+ Oracle / H2 (tests)
Reporter: Lorber Sebastien
Priority: Minor
Hello,
It's not a major issue but anyway it made me wonder some minutes what was the problem.
I used this in an entity:
@Enumerated(EnumType.STRING)
@Column(name = "size", nullable=false)
public ImageSize getImageSize() {
return imageSize;
}
Hbm2ddl generates:
create table NWS_PICTURE (
news_id varchar2(36 char) not null,
size varchar2(255 char) not null,
path varchar2(255 char) not null,
picture_id number(19,0),
primary key (picture_id)
);
but i can't pass that on Oracle:
create table NWS_PICTURE (
news_id varchar2(36 char) not null,
size varchar2(255 char) not null,
path varchar2(255 char) not null,
picture_id number(19,0),
primary key (picture_id)
)
Erreur à la ligne de commande : 3, colonne : 8
Rapport d'erreur :
Erreur SQL : ORA-00904: : invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Because size is a keyword, it doesn't work.
Wouldn't it be better to make it fail fast and not generate the SQL schema in these cases?
I don't know if it is specific to oracle. If it is, perhaps adding a comment above the generated sql create table, or a warning in the hbm2ddl process?
It seems ok when using H2, i was able during tests to retrieve data from this table.
--
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
15 years, 3 months
[Hibernate-JIRA] Created: (HHH-3332) Hibernate duplicate then child entity's on merge
by Rodrigo de Assumpção (JIRA)
Hibernate duplicate then child entity's on merge
------------------------------------------------
Key: HHH-3332
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3332
Project: Hibernate3
Issue Type: Bug
Affects Versions: 3.2.6
Environment: JDK 1.6
Oracle 9i
Hibernate 3.2.6
Hibernate Annotations 3.3.1
Hibernate EntityManager 3.3.2
Standalone Running
Reporter: Rodrigo de Assumpção
Priority: Critical
The method merge from EntityManager causes a duplication of child entity's.
class Father:
@OneToMany(mappedBy = "father", cascade={CascadeType.ALL}, fetch=FetchType.LAZY)
private List<Child> childList;
class Child:
@ManyToOne @JoinColumn(name = "ID_FATHER")
private Father father;
class BugTest
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JpaTestHB");
EntityManager em = emf.createEntityManager();
Father f = (Father) em.createQuery("SELECT f FROM Father f WHERE f.id = 1").getSingleResult();
Child c = new Child();
c.setFather(f);
f.getChildList().add(c);
em.getTransaction().begin();
em.merge(f);
em.getTransaction().commit();
The execution of BugTest Class causes tow insert's on table "child".
If you change the fetch mode to EAGER (into Father class) the problem not occurs.
I make the same test with Toplink, and it make a unique insert, normal.
--
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
15 years, 3 months
[Hibernate-JIRA] Created: (HHH-5359) Derived entity usecase fails when the association is bidirectional
by Hardy Ferentschik (JIRA)
Derived entity usecase fails when the association is bidirectional
------------------------------------------------------------------
Key: HHH-5359
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5359
Project: Hibernate Core
Issue Type: Bug
Components: entity-manager
Affects Versions: 3.5.3
Reporter: Hardy Ferentschik
Fix For: 3.6
See https://forum.hibernate.org/viewtopic.php?f=9&t=1005649
The exception is
{noformat}
org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: org.hibernate.test.annotations.derivedidentities.bidirectional.Dependent.emp in org.hibernate.test.annotations.derivedidentities.bidirectional.Employee.dependents
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:655)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:619)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1221)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:383)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at org.hibernate.test.annotations.TestCase.buildConfiguration(TestCase.java:114)
at org.hibernate.test.annotations.HibernateTestCase.setUp(HibernateTestCase.java:133)
at org.hibernate.test.annotations.HibernateTestCase.runBare(HibernateTestCase.java:80)
at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:108)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:64)
{noformat}
The mapping is as follows:
{code}
@Entity
public class Employee {
@Id
long empId;
String empName;
@OneToMany(mappedBy = "emp", fetch = FetchType.LAZY)
private Set<Dependent> dependents;
}
{code}
{code}
@Entity
//(a)IdClass(DependentId.class)
public class Dependent implements Serializable {
@Id
@ManyToOne
Employee emp;
String name;
}
{code}
It does not work with @IdClass either.
--
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
15 years, 3 months
[Hibernate-JIRA] Created: (HHH-5529) Bulk delete on Entity with @ElementCollection ignores the @CollectionTable
by Pascal Thivent (JIRA)
Bulk delete on Entity with @ElementCollection ignores the @CollectionTable
--------------------------------------------------------------------------
Key: HHH-5529
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5529
Project: Hibernate Core
Issue Type: Bug
Components: entity-manager
Affects Versions: 3.6.0.Beta4, 3.6.0.Beta3, 3.5.5, 3.6.0.Beta2, 3.6.0.Beta1, 3.5.4, 3.5.3, 3.5.2, 3.5.1, 3.5.0-Final, 3.5.0-CR-2, 3.5.0-CR-1, 3.5.0-Beta-4, 3.5.0-Beta-3, 3.5.0-Beta-2, 3.5.0.Beta-1
Environment: Hibernate 3.5.x, all database, all platforms.
Reporter: Pascal Thivent
Attachments: HHH-XXX.tar.gz
I have an entity with a collection of basic elements mapped with @ElementCollection:
{code}
@Entity
public class Foo {
@Id @GeneratedValue
private Long id;
@ElementCollection
@Column(name = "bar_column")
@CollectionTable(name = "Bar")
private Set<String> bars = new HashSet<String>();
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public Set<String> getBars() { return bars; }
public void setBars(Set<String> bars) { this.bars = bars; }
}
{code}
A bulk delete on this entity fails due to constraint violation on the collection table (Hibernate ignores the collection table).
I don't think that the following cascading restriction from the JPA 2.0 specification applies:
{quote}
h3. 4.10 Bulk Update and Delete Operations
...
A delete operation only applies to entities of the specified class and its subclasses. It does not cascade to related entities.
{quote}
In other words, Hibernate should handle the collection table as we have no way to bulk delete the basic elements from the collection table.
I have attached a test case allowing to reproduce the issue.
--
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
15 years, 3 months
[Hibernate-JIRA] Created: (HHH-5280) "java.lang.IllegalArgumentException: object is not an instance of declaring class" when persisting a object graph containing the same transient objetc twice.
by Benjamin Lerman (JIRA)
"java.lang.IllegalArgumentException: object is not an instance of declaring class" when persisting a object graph containing the same transient objetc twice.
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: HHH-5280
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5280
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.5.2
Environment: Hibernate 3.5.2
Db: All? (At least h2 and mysql)
Reporter: Benjamin Lerman
Priority: Critical
Attachments: hibernate-multi-parent.tgz, test.entity.TestCreate.txt
I attach a maven project showing the bug.
I have 3 classes, A, B, C with
C have a one-to-many unidirectional relation to B and A.
B have a one-to-many unidirectional relation to A.
Those relations are mapped by foreign keys.
The cascading properties for those relations are all save-update,persist
For each of those relations, the inverse cardinality is 1 (which means A must be associated with a B and a C, and B must be associated with a C).
I create an instance of C that I associate to an instance of B and an instance of A, and I associate the instance of B with the instance of A.
I then try to save C, and I get the attached exception.
For what I understood the problem is with the method StatefulPersistenceContext.getOwnerId: this method use a cache to retrieve the parent of the instance of A, but because A has 2 different parents (the instance of B and the instance of C), it does not retrieve the right one and try to call a method on the wrong entity.
--
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
15 years, 3 months
[Hibernate-JIRA] Created: (HHH-5539) ParameterParser does not support escaped ' symbols
by Alexey Romanchuk (JIRA)
ParameterParser does not support escaped ' symbols
--------------------------------------------------
Key: HHH-5539
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5539
Project: Hibernate Core
Issue Type: Bug
Components: query-sql
Affects Versions: 3.6.0.Beta4
Environment: 3.6.0 and postgresql 8.2.1
Reporter: Alexey Romanchuk
I create native SQLQuery with createSQLQuery method.
Looks like ParameterParser incorrectly process queries with escaped ' symbol. For example query like "select * from a where a.b = 'asdf \' asdf'" works fine, but "select * from a where a.b = 'asdf \' asdf: '" fails with
org.hibernate.QueryException: Space is not allowed after parameter prefix ':' 'select * from a where a.b = 'asdf \' asdf''
at org.hibernate.engine.query.ParameterParser.parse(ParameterParser.java:92)
at org.hibernate.engine.query.ParamLocationRecognizer.parseLocations(ParamLocationRecognizer.java:75)
at org.hibernate.engine.query.QueryPlanCache.buildNativeSQLParameterMetadata(QueryPlanCache.java:149)
at org.hibernate.engine.query.QueryPlanCache.getSQLParameterMetadata(QueryPlanCache.java:79)
at org.hibernate.impl.AbstractSessionImpl.createSQLQuery(AbstractSessionImpl.java:146)
at org.hibernate.impl.SessionImpl.createSQLQuery(SessionImpl.java:1656)
--
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
15 years, 3 months