[
http://opensource.atlassian.com/projects/hibernate/browse/HBX-731?page=co...
]
Max Rydahl Andersen commented on HBX-731:
-----------------------------------------
well, we choose to implement the more common approach and that is to use primarykeys to
decide what is the identifier.
And if it is not there we fallback to refer to all the columns.
I guess we could alternatively add another fallback if there is a unique index declared.
Feel free to provide a patch for JDBCBinder.
All the fields are marked as <key-property> in
<composite-id>
-------------------------------------------------------------
Key: HBX-731
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HBX-731
Project: Hibernate Tools
Type: Bug
Environment: Hibernate Tools 3.1.0.beta5
MS Windows, Oracle 9i server
Reporter: Al Dev
All the fields are marked as <key-property> in <composite-id>
in the Scbcrse.hbm.xml file. How come the tool is not picking up the unique index key
fields in the database table?
What I expect from the hibernate tool is that it should not the unique key indexes
created for the database table and
based on that it should make the <composite-id> fields.
It looks like the tool is completely ignoring the unique key indexes created on the
table.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Aug 16, 2006 4:23:47 PM by Hibernate Tools 3.1.0.beta5 -->
<hibernate-mapping>
<class name="edu.sjcd.hibernate.oracle.ScbcrseMy"
table="SCBCRSE" schema="SATURN">
<composite-id name="id"
class="edu.sjcd.hibernate.oracle.generated.ScbcrseId">
<key-property name="scbcrseSubjCode"
type="string">
<column name="SCBCRSE_SUBJ_CODE" length="4" />
</key-property>
<key-property name="scbcrseCrseNumb"
type="string">
<column name="SCBCRSE_CRSE_NUMB" length="5" />
</key-property>
<key-property name="scbcrseEffTerm" type="string">
<column name="SCBCRSE_EFF_TERM" length="6" />
</key-property>
<key-property name="scbcrseCollCode"
type="string">
<column name="SCBCRSE_COLL_CODE" length="2" />
</key-property>
<key-property name="scbcrseDivsCode"
type="string">
<column name="SCBCRSE_DIVS_CODE" length="4" />
</key-property>
<key-property name="scbcrseDeptCode"
type="string">
<column name="SCBCRSE_DEPT_CODE" length="4" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
I have table in oracle which has fields like this:
CREATE TABLE SATURN.SCBCRSE
(
SCBCRSE_SUBJ_CODE VARCHAR2(4 BYTE) NOT NULL,
SCBCRSE_CRSE_NUMB VARCHAR2(5 BYTE) NOT NULL,
SCBCRSE_EFF_TERM VARCHAR2(6 BYTE),
SCBCRSE_COLL_CODE VARCHAR2(2 BYTE),
SCBCRSE_DIVS_CODE VARCHAR2(4 BYTE),
SCBCRSE_DEPT_CODE VARCHAR2(4 BYTE)
)
CREATE UNIQUE INDEX SATURN.SCBCRSE_KEY_INDEX ON SATURN.SCBCRSE
(SCBCRSE_SUBJ_CODE, SCBCRSE_CRSE_NUMB, SCBCRSE_EFF_TERM)
And I have the reveng.xml as :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse
Engineering DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
<hibernate-reverse-engineering>
<schema-selection match-schema="SATURN" />
<type-mapping>
<sql-type jdbc-type="NUMERIC" precision="22" scale="0"
hibernate-type="long" />
</type-mapping>
<table-filter match-name="SCBCRSE.*" />
</hibernate-reverse-engineering>
--
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