From: <leg...@at...> - 2003-08-11 17:19:40
|
The following comment has been added to this issue: Author: abe zafar Created: Mon, 11 Aug 2003 12:05 PM Body: Maybe this example will make my point more clear: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="com.rhi.domain.impl.Person" table="people"> <meta attribute="implements">com.rhi.domain.Person</meta> <composite-id name="pk" class="com.rhi.domain.impl.id.PersonPk"> <key-property name="personId" column="person_id" type="java.lang.Long"/> <key-property name="personRegionId" column="person_region_id" type="java.lang.Long"/> </composite-id> <property name="number" column="people_no" type="java.lang.Long"/> <property name="firstName" column="first_name" type="java.lang.String"/> <property name="middleName" column="middle_name" type="java.lang.String"/> <property name="lastName" column="last_name" type="java.lang.String"/> </class> </hibernate-mapping> The intention in this example is that the class "com.rhi.domain.impl.Person" should implement the interface "com.rhi.domain.Person" and the class "com.rhi.domain.impl.id.PersonPk" should NOT implement any interfaces. But what happens is both classes "com.rhi.domain.impl.Person" and "com.rhi.domain.impl.id.PersonPk" end up implementing "com.rhi.domain.Person". Now you are suggesting to put inherit="false" at the class level but that doesn't do what I need because I still want "com.rhi.domain.impl.Person" to implement the interface "com.rhi.domain.Person". --------------------------------------------------------------------- View the issue: http://opensource.atlassian.com/projects/hibernate/secure/ViewIssue.jspa?key=HB-242 Here is an overview of the issue: --------------------------------------------------------------------- Key: HB-242 Summary: <meta attribute="implements"> does not behave as expected Type: Bug Status: Closed Priority: Major Resolution: REJECTED Project: Hibernate2 Components: toolset Versions: 2.0.1 Assignee: Reporter: abe zafar Created: Sun, 10 Aug 2003 2:40 AM Updated: Sun, 10 Aug 2003 6:37 AM Environment: JDK1.4 Description: If the tag <meta attribute="implements">com.hp.Printer</meta> is inserted as a child of the class tag it properly adds the implement clause to the class. But if that class also contained a <composite-id> tag which indicated a class then that class would also UNEXPECTEDLY implement the interface "com.hp.Printer". So in the following example: <class name="com.hp.ColorPrinter"> <meta attribute="implements">com.hp.Printer</meta> <composite-id name="propertyName" class="com.hp.PrinterId"> <key-property name="propertyName" type="typename" column="column_name"/> <key-many-to-one name="propertyName class="ClassName" column="column_name"/> </composite-id> Both "ColorPrinter" and "PrinterId" end up implementing "com.hp.Printer". ColorPrinter is expected to implement the interface, but PrinterId should not implement the interface. --------------------------------------------------------------------- JIRA INFORMATION: 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.jspa If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira |