You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Alexander Filipchik (JIRA)" <ji...@apache.org> on 2007/10/24 14:31:50 UTC
[jira] Created: (OPENJPA-414) Null id's in entyties while using
Joined inheritance strategy
Null id's in entyties while using Joined inheritance strategy
-------------------------------------------------------------
Key: OPENJPA-414
URL: https://issues.apache.org/jira/browse/OPENJPA-414
Project: OpenJPA
Issue Type: Bug
Affects Versions: 1.0.0
Reporter: Alexander Filipchik
Priority: Blocker
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) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
State that = (State) obj;
if (stateId!=that.stateId) return false;
return true;
}
@Override
public int hashCode() {
int result;
result = 31 * result + (int) (stateId ^ (stateId >>> 32));
}
}
<?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)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.