Details
-
Bug
-
Status: Open
-
Blocker
-
Resolution: Unresolved
-
1.0.0
-
None
-
None
-
None
Description
I use inheritance in that way:
Parent class:
public class State implements Serializable {
private static final long serialVersionUID = -380133999593231293L;
private long stateId;
public State() {
}
public long getStateId()
{ return stateId; }public void setStateId(long stateId)
{ this.stateId = stateId; } @Override
public boolean equals(Object obj)
@Override
public int hashCode()
}
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" version="1.0">
<package>xxx</package>
<entity class="State" name="State">
<table name="REG_STATUS" />
<inheritance strategy="JOINED"/>
<attributes>
<id name="stateId">
<column name="STATUS_ID"/>
</id>
</attributes>
</entity>
it has 1 child class:
public class RCategory extends State implements Serializable {
private static final long serialVersionUID = 2472570459234097349L;
private RCategory parentCategory;
private String title;
private String description;
private Set<RCategory> children;
private boolean containsChildren;
private Long id;
public RCategory() {
}
public RCategory(Long id, String title)
{ setId(id); this.title = title; this.containsChildren = false; }public RCategory(Long id, String title, boolean containsChildren)
{ setId(id); this.title = title; this.containsChildren = containsChildren; }public String getDescription()
{ return description; }public void setDescription(String description)
{ this.description = description; }public String getTitle()
{ return this.title; }public Long getId()
{ return id; }public void setId(Long id)
{ System.out.println("---------------------Setting id-------------------"); System.out.println(id); this.id = id; }public void setTitle(String title)
{ this.title = title; }public Set<RCategory> getChildren()
{ return children; }public void setChildren(Set<RCategory> children)
{ this.children = children; }public RCategory getParentCategory()
{ return parentCategory; }public void setParentCategory(RCategory parentCategory)
{ this.parentCategory = parentCategory; }public boolean isContainsChildren()
{ return containsChildren; }public void setContainsChildren(boolean containsChildren)
{ this.containsChildren = containsChildren; }public boolean equals(Object o)
{ if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; RCategory rCategory = (RCategory) o; if (id != null ? !id.equals(rCategory.id) : rCategory.id != null) return false; if (title != null ? !title.equals(rCategory.title) : rCategory.title != null) return false; return true; }public int hashCode()
{ int result = super.hashCode(); result = 31 * result + (title != null ? title.hashCode() : 0); result = 31 * result + (id != null ? id.hashCode() : 0); return result; }}
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
version="1.0">
<package>xxx</package>
<entity class="RCategory" name="RCategory">
<table name="reg_r_category"/>
<primary-key-join-column name="R_CATEGORY_ID" referenced-column-name="STATUS_ID"/>
<post-load method-name="prinf"/>
<attributes>
<id name="id">
<column name="R_CATEGORY_ID"/>
</id>
<basic name="title">
<column length="256" name="TITLE" nullable="false"/>
</basic>
<basic name="description">
<column length="512" name="DESCRIPTION" nullable="false"/>
</basic>
<basic name="containsChildren">
<column name="CONTAIN_SUBCATEGORIES"/>
</basic>
<many-to-one name="parentCategory" target-entity="RCategory">
<join-column name="PARENT_CATEGORY_ID" insertable="true" updatable="true"/>
<cascade>
<cascade-merge/>
<cascade-refresh/>
</cascade>
</many-to-one>
<one-to-many mapped-by="parentCategory" name="children" target-entity="RCategory">
<order-by>title</order-by>
<cascade>
<cascade-all/>
</cascade>
</one-to-many>
</attributes>
</entity>
When i use getReference on RCategory - i get object with NULL!!!! id.
Also, when i use find, i get object with null id too, but i can use it in references (add to another object and persist)