[hibernate-issues] [Hibernate-JIRA] Created: (HBX-1193) reverse engineering of UniqueConstraint annotation for function-based indexes

Steve Maring (JIRA) noreply at atlassian.com
Wed Oct 12 16:16:19 EDT 2011


reverse engineering of UniqueConstraint annotation for function-based indexes
-----------------------------------------------------------------------------

                 Key: HBX-1193
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-1193
             Project: Hibernate Tools
          Issue Type: Bug
          Components: hbm2java
    Affects Versions: 3.2.4.GA
            Reporter: Steve Maring


getting a runtime error ...

[code]org.hibernate.AnnotationException: Unable to create unique key constraint (SYS_NC00048$) on table WRKR: SYS_NC00048$ not found[/code]

the generated entity looks like this:

[code]@Entity
@Table(name="WRKR"
    , uniqueConstraints = {  @UniqueConstraint(columnNames="SYS_NC00048$"),
                                @UniqueConstraint(columnNames="SYS_NC00047$"), 
                                @UniqueConstraint(columnNames="LOGIN_VAL"), 
                                @UniqueConstraint(columnNames="SOCL_SECUR_NUM_VAL"), 
                                @UniqueConstraint(columnNames="AD_LOGIN_VAL")} 
)
public class Wrkr  implements java.io.Serializable {[/code]

Interesting thing is that this data seems to be coming from the table Indexes.  They read ...

[code]
Index Name		        Uniqueness	        Index Type		         Columns     	Column Expression
IX_WRKR_01		        UNIQUE		NORMAL			        WRKR_SEQ	
IX_WRKR_12		        UNIQUE		NORMAL			        SOCL_SECUR_NUM_VAL	
IX_WRKR_16		        UNIQUE		FUNCTION-BASED NORMAL	SYS_NC00047$		UPPER("AD_LOGIN_VAL")
IX_WRKR_17		        UNIQUE		FUNCTION-BASED NORMAL	SYS_NC00048$		UPPER("LOGIN_VAL")
IX_WRKR_UQ_LOGIN_VAL	  UNIQUE		NORMAL			        LOGIN_VAL	
IX_WRKR_UQ_AD_LOGIN_VAL	UNIQUE		NORMAL			        AD_LOGIN_VAL
[/code]

WRKR_SEQ is the primary key, and SOCL_SECUR_NUM_VAL, LOGIN_VAL, and AD_LOGIN_VAL are "real" columns.  The other two SYS_NC0004#$ are not actual columns in the table.  They seem to be some sort of "function-based" Oracle indexes/columns that you only see in the list of indexes.

tried:
<table name="WRKR">
		<column name="SYS_NC00047$" exclude="true"/>
		<column name="SYS_NC00048$" exclude="true"/>
</table>

but it didn't help.

The problem seems to be isolated to the annotation generation.  I would venture to say that it should NOT be generating @UniqueConstraint entries for columns that don't actually exist in the table.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list