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/05/01 19:11:00 UTC

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

    [ https://issues.apache.org/jira/browse/OPENJPA-2805?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17097615#comment-17097615 ] 

Patrice DUROUX commented on OPENJPA-2805:
-----------------------------------------

I also post 2 messages connected to this problem:

[http://mail-archives.apache.org/mod_mbox/openjpa-dev/202003.mbox/%3CCAGKjw9LUq0ngMBNewnLfwyU6jd_7rh6d39ojRqPTrANsKghuLw%40mail.gmail.com%3E]

[http://mail-archives.apache.org/mod_mbox/openjpa-dev/202003.mbox/%3C1584789523706-0.post%40n2.nabble.com%3E]

 

> 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: 2.4.3, 3.0.0
>            Reporter: Patrice DUROUX
>            Priority: Major
>         Attachments: node.zip
>
>
> 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)