You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Patrice DUROUX (Jira)" <ji...@apache.org> on 2020/02/19 11:54:00 UTC

[jira] [Created] (OPENJPA-2805) unable to map self-related class with discrepancy between the annotation and XML ORMs

Patrice DUROUX created OPENJPA-2805:
---------------------------------------

             Summary: unable to map self-related class with discrepancy between the annotation and XML ORMs
                 Key: OPENJPA-2805
                 URL: https://issues.apache.org/jira/browse/OPENJPA-2805
             Project: OpenJPA
          Issue Type: Bug
    Affects Versions: 3.0.0, 2.4.3
            Reporter: Patrice DUROUX


Dear OpenJPA developers,

I've been beating around the bush for a long time and hesitating to repport a bug until now.

My problem is a much larger project but it can be summed up in the following situation. I would like to map such a class using an XML ORM onto a specific relational schema (I mean to not have any preferred column names for the corresponding join table).

 
{noformat}
public class Node2 implements Serializable {
	private static final long serialVersionUID = -3038751343463495553L;	private Long id;	public Long getId() {
		return id;
	}	public void setId(Long id) {
		this.id = id;
	}	private Node2 parent;	public Node2 getParent() {
		return parent;
	}	public void setParent(Node2 parent) {
		this.parent = parent;
	}	private Set<Node2> childs;	public Set<Node2> getChilds() {
		return childs;
	}	public void setChilds(Set<Node2> childs) {
		this.childs = childs;
	}	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Node2 other = (Node2) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}	public Node2() {
		this.childs = new LinkedHashSet<>();
	}
}

{noformat}
I have a small Maven project with many persistence units as cases that are not given me the expected result (working or not). But doing this, I am also facing strange discrepancy between the annotation and the XML approaches (that are supposed to be equivalent to me for case1 and case2 if I am not wrong).

Also I tried both using a runtime enhancement and a static one.

I am have a zip of a small Maven project with a JUnit test for the different cases to check.

In the larger project, I created a view to solve part of the problem. But then sure I cannot use the mapping to it to modify the persisted objects.

Regards,

Patrice



--
This message was sent by Atlassian Jira
(v8.3.4#803005)