[Hibernate-JIRA] Created: (HBX-1132) POJO java code exporter (<hbm2java>) should generate field or property access Java annotated files
by Julien Kronegg (JIRA)
POJO java code exporter (<hbm2java>) should generate field or property access Java annotated files
---------------------------------------------------------------------------------------------------
Key: HBX-1132
URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-1132
Project: Hibernate Tools
Issue Type: New Feature
Components: hbm2java
Affects Versions: 3.2.4 Beta1
Environment: http://anonsvn.jboss.org/repos/hibernate/branches/Branch_3_2/HibernateExt...
http://anonsvn.jboss.org/repos/hibernate/branches/Branch_3_2/HibernateExt...
Reporter: Julien Kronegg
Priority: Minor
Attachments: GetFieldAnnotation.ftl, PojoFields.ftl, PojoPropertyAccessors.ftl
Currently, the POJO java code exporter generates only property access mode Java files, i.e. the JPA annotations are put on the getters only.
This is done in PojoFields.ftl (which does not contain annotations on fields) and in PojoPropertyAccessors.ftl (which includes the GetPropertyAnnotation.ftl that produces annotations on the methods).
It would be nice if the hbm2java task generate also field or property access mode entities (with property access mode by default).
The implementation could be based on the following workaround.
Workaround:
------------------
1) extract the following files from the hibernate-tools.jar/ and put them in the /pojo/ directory:
PojoFields.ftl
PojoPropertyAccessors.ftl
GetPropertyAnnotation.ftl
Ejb3PropertyGetAnnotation.ftl
2) rename GetPropertyAnnotation.ftl to GetFieldAnnotation.ftl and change references from "property" to "field", resulting in the attached file GetFieldAnnotation.ftl
3) rename Ejb3PropertyGetAnnotation.ftl to Ejb3FieldGetAnnotation.ftl and change references from "property" to "field", resulting in the attached file Ejb3FieldGetAnnotation.ftl
4) edit PojoFields.ftl to add a conditional inclusion of GetFieldAnnotation.ftl (resulting in the attached PojoFields.ftl):
- </#if> ${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>;
+ </#if>
+ <#if exporter.properties.containsKey('jpaAccessMode') && jpaAccessMode.equals('field')>
+ <#include "GetFieldAnnotation.ftl"/>
+ </#if>
+ ${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>;
5) edit the PojoPropertyAccessors.ftl to change to a conditional inclusion of GetPropertyAnnotation.ftl (resulting in the attached PojoPropertyAccessors.ftl):
- <#include "GetPropertyAnnotation.ftl"/>
+ <#if !exporter.properties.containsKey('jpaAccessMode') || !jpaAccessMode.equals('field')>
+ <#include "GetPropertyAnnotation.ftl"/>
+ </#if>
6) in the Ant build.xml, add a property <property name="jpaAccessMode" value="field"/> to the <hibernate> tag, for example:
<hibernate ...>
<jdbcconfiguration .../>
<property name="jpaAccessMode" value="field"/><!-- possible values are : field | property ; any other value defaults to property -->
<hbm2java ...>
</hibernate>
--
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
16 years, 7 months
[Hibernate-JIRA] Created: (ANN-751) Hibernate reports erroneous "possible typo error" for properties with protected accessor methods
by Stephen R. Saucier (JIRA)
Hibernate reports erroneous "possible typo error" for properties with protected accessor methods
------------------------------------------------------------------------------------------------
Key: ANN-751
URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-751
Project: Hibernate Annotations
Issue Type: Improvement
Affects Versions: 3.3.0.ga
Reporter: Stephen R. Saucier
Priority: Minor
Attachments: checkForOrphanProperties.patch
According to the EJB3 spec, section 2.1.1 (Persistent Fields and Properties), "property accessor methods must be public or protected." However, the checkForOrphanProperties method of org.hibernate.cfg.annotations.reflection.EJB3OverridenAnnotationReader only looks for public methods (by virtue of the fact that it is using the getMethods method of Class. I believe that the checkForOrphanProperties method ought to look at the protected methods implemented in the entity class as well in order to eliminate the erroneous warning messages that are reported when using hibernate with protected property accessor methods.
I've attached a patch which implements this additional behavior.
--
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
16 years, 7 months
[Hibernate-JIRA] Created: (HBX-1093) Missing inverseJoinColumn at ManyToMany relations with composite keys
by Nils Kelleter (JIRA)
Missing inverseJoinColumn at ManyToMany relations with composite keys
---------------------------------------------------------------------
Key: HBX-1093
URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-1093
Project: Hibernate Tools
Issue Type: Bug
Components: hbm2java
Affects Versions: 3.2.2, 3.2LATER
Environment: Hibernate Tools version 3.2.2.Beta1 and 3.2.4.CR1-N200810300202, Oracle Database
Reporter: Nils Kelleter
Using the hbm2java tool for reverse engineering of database tables, the following problem exists:
At ManyToMany relations with composite keys an inverseJoinColumn is missing.
Wrong code:
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "ET_MANY_TO_MANY_COMP_MAPPING",
joinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP1_ID", nullable = false, updatable = false),
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP11_ID", nullable = false, updatable = false) },
inverseJoinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP2_ID", nullable = false, updatable = false) })
public Set<EtManyToManyComp2> getEtManyToManyComp2s() {
return this.etManyToManyComp2s;
}
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "ET_MANY_TO_MANY_COMP_MAPPING",
joinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP2_ID", nullable = false, updatable = false),
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP22_ID", nullable = false, updatable = false) },
inverseJoinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP1_ID", nullable = false, updatable = false) })
public Set<EtManyToManyComp1> getEtManyToManyComp1s() {
return this.etManyToManyComp1s;
}
Correct code:
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "ET_MANY_TO_MANY_COMP_MAPPING",
joinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP1_ID", nullable = false, updatable = false),
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP11_ID", nullable = false, updatable = false) },
inverseJoinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP2_ID", nullable = false, updatable = false),
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP22_ID", nullable = false, updatable = false) })
public Set<EtManyToManyComp2> getEtManyToManyComp2s() {
return this.etManyToManyComp2s;
}
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "ET_MANY_TO_MANY_COMP_MAPPING",
joinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP2_ID", nullable = false, updatable = false),
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP22_ID", nullable = false, updatable = false) },
inverseJoinColumns = {
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP1_ID", nullable = false, updatable = false),
@JoinColumn(name = "FK_ET_MANY_TO_MANY_COMP11_ID", nullable = false, updatable = false) })
public Set<EtManyToManyComp1> getEtManyToManyComp1s() {
return this.etManyToManyComp1s;
}
For reproducing this, you can use the following Oracle SQL scripts:
CREATE TABLE ET_MANY_TO_MANY_COMP1 (
ET_MANY_TO_MANY_COMP1_ID NUMBER,
ET_MANY_TO_MANY_COMP11_ID NUMBER,
FIELD VARCHAR2(10),
PRIMARY KEY (ET_MANY_TO_MANY_COMP1_ID, ET_MANY_TO_MANY_COMP11_ID)
);
CREATE TABLE ET_MANY_TO_MANY_COMP2 (
ET_MANY_TO_MANY_COMP2_ID NUMBER,
ET_MANY_TO_MANY_COMP22_ID NUMBER,
FIELD VARCHAR2(10),
PRIMARY KEY (ET_MANY_TO_MANY_COMP2_ID, ET_MANY_TO_MANY_COMP22_ID)
);
CREATE TABLE ET_MANY_TO_MANY_COMP_MAPPING (
FK_ET_MANY_TO_MANY_COMP1_ID NUMBER,
FK_ET_MANY_TO_MANY_COMP11_ID NUMBER,
FK_ET_MANY_TO_MANY_COMP2_ID NUMBER,
FK_ET_MANY_TO_MANY_COMP22_ID NUMBER,
FOREIGN KEY (FK_ET_MANY_TO_MANY_COMP1_ID,FK_ET_MANY_TO_MANY_COMP11_ID)
REFERENCES ET_MANY_TO_MANY_COMP1(ET_MANY_TO_MANY_COMP1_ID,ET_MANY_TO_MANY_COMP11_ID),
FOREIGN KEY (FK_ET_MANY_TO_MANY_COMP2_ID, FK_ET_MANY_TO_MANY_COMP22_ID)
REFERENCES ET_MANY_TO_MANY_COMP2(ET_MANY_TO_MANY_COMP2_ID, ET_MANY_TO_MANY_COMP22_ID),
PRIMARY KEY (FK_ET_MANY_TO_MANY_COMP1_ID,FK_ET_MANY_TO_MANY_COMP11_ID,FK_ET_MANY_TO_MANY_COMP2_ID,FK_ET_MANY_TO_MANY_COMP22_ID)
);
--
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
16 years, 7 months
[Hibernate-JIRA] Created: (HBX-1112) Reverse engineering problem with composite primary key
by Christian Meyer (JIRA)
Reverse engineering problem with composite primary key
------------------------------------------------------
Key: HBX-1112
URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-1112
Project: Hibernate Tools
Issue Type: Bug
Affects Versions: 3.2.4 Beta1
Environment: configuration:
Hibernate Tools version: HibernateTools-3.2.4.CR2-R200901280154
Hibernate version: hibernate-3.2.6.ga.zip
Database: Sybase SQL Anywhere 10.0.1.3415
JDBC-Driver: jconnect 6.05
Eclipse Version: 3.4.0
Code Generation Configuration:
Use Java 5 syntax and generate EJB3 annotations switched on.
Exporters: domain code.
Reporter: Christian Meyer
Hello,
I have a problem reverse engineering domain code from a sybase anywhere 10 database.
For every table with composite primary key i get the following exception:
org.hibernate.cfg.JDBCBinderException: Duplicate names found for primarykey.
Her is one example:
create table DCALLS
(
AES timestamp default timestamp,
APPLID char(8) not null,
DIALOG integer not null,
COUNTER integer,
constraint PK_DCALLS primary key (APPLID, DIALOG)
);
For downloading developer edition of sybase anywhere version 10 follow the link: http://marketing.ianywhere.com/forms/SQLAny10DevEditionCDReigster
I used a Hibernate dialect from the sybase homepage: http://www.sybase.de/detail?id=1057826
org.hibernate.cfg.JDBCBinderException: Duplicate names found for primarykey.
Existing name: APPLID JDBC name: DIALOG on table org.hibernate.mapping.Table(sybase10.DCALLS)
Duplicate names found for primarykey. Existing name: APPLID JDBC name: DIALOG on table org.hibernate.mapping.Table(sybase10.DCALLS)
all Tables with single key are fine.
--
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
16 years, 7 months
[Hibernate-JIRA] Updated: (HHH-1012) Index not created by SchemaUpdate
by Steve Ebersole (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1012?page=c... ]
Steve Ebersole updated HHH-1012:
--------------------------------
Fix Version/s: (was: 3.5.0.Beta-1)
3.5-tmp
> Index not created by SchemaUpdate
> ---------------------------------
>
> Key: HHH-1012
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1012
> Project: Hibernate Core
> Issue Type: New Feature
> Components: metamodel
> Affects Versions: 3.2.5
> Environment: Windows XP, MySQL/PostgreSQL
> Reporter: Xavier Farret
> Assignee: Steve Ebersole
> Priority: Minor
> Fix For: 3.2.x, 3.3.x, 3.5
>
> Attachments: Indexes.patch
>
>
> i'm using an hbm.xml as describe below and the 'hibernate.hbm2ddl.auto' is egal to update.
> <class table="featurestat" name=".....">
> <id name="id" type="long" column="idFeatureStat">
> <generator class="increment"/>
> </id>
> <properties name="fsUniqueValue" unique="true">
> ....
> </properties>
> <property name="frequency" .../>
> <property name="idFatherFeature" index="FeatStatDocExtSectFeat" not-null="true" type="long" column="..."/>
> ....
> </class>
> Indexes for pk or unique key are well created, but the index explicity named 'FeatStatDocExtSectFeat' is never created. If i put the property 'hibernate.hbm2ddl.auto' in the cfg.xml as 'create' the index is created. But in my case i have to set my property 'hibernate.hbm2ddl.auto' to update.
--
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
16 years, 7 months