Total members 9951 | Gratitudes |It is currently Sat Feb 11, 2012 10:18 am Login / Join Codemiles


All times are UTC [ DST ]




Post new topic Reply to topic  Quick reply  [ 1 post ] 
Author Code Snippet
 Code subject: Id reference annotation relationship
PostPosted: Tue Apr 20, 2010 2:23 pm 
Offline
Mastermind
User avatar

Joined: Tue Mar 27, 2007 10:55 pm
Posts: 2103
Location: Earth
Has thanked: 39 time
Have thanks: 56 time

Id reference annotation relationship:
One of the alternative ways to do a many to one relationship in JPA entity is to add annotation to Id and referenced object. The following three classes show this relation .

Topic class :
Code:

package com
.codemiles.jpa;
import java.util.Collection;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.OneToMany;


@
Entity
@Table(name="TOPIC")
public class Topic implements java.io.Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    private int Id
;
    private String title;
    private Date creationDate;
    private Date modifedDate;
    private String content;
    @OneToMany(mappedBy="topic")
    private Collection<Comment> comments;

    public int getId() {
        return Id;
    }
    public void setId(int id) {
        Id = id;
    }
    
    
@Column(name="TITLE")
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    
    
@Column(name="CREATION_DATE")
    public Date getCreationDate() {
        return creationDate;
    }
    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }
    
    
@Column(name="MODIFED_DATE")
    public Date getModifedDate() {
        return modifedDate;
    }
    public void setModifedDate(Date modifedDate) {
        this.modifedDate = modifedDate;
    }
    
    
@Column(name="CONTENT")
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public void setComments(Collection<Comment> comments) {
    this.comments = comments;
    }
    public Collection<Comment> getComments() {
    return comments;
    }
}
 


Comment class :
Code:

package com
.codemiles.jpa;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


/**
 * @author codemiles
 *
 */
@Entity
@Table(name="COMMENT")
@
IdClass(Comment_Id.class)
public class Comment implements java.io.Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    private int Id
;
    private String title;
    private Date creationDate;
    private Date modifedDate;
    private String commentBody;
    @Id
    
@Column(name = "TOPIC_ID", insertable = false, updatable = false)
    private int topic_id;
    
    
@ManyToOne
    
@JoinColumn(name = "TOPIC_ID")
    private Topic topic;
    
    public int getId
() {
        return Id;
    }
    public void setId(int id) {
        this.Id = id;
    }
    
    
@Column(name="TITLE")
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    
    
@Column(name="CREATION_DATE")
    public Date getCreationDate() {
        return creationDate;
    }
    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }
    
    
@Column(name="MODIFED_DATE")
    public Date getModifedDate() {
        return modifedDate;
    }
    public void setModifedDate(Date modifedDate) {
        this.modifedDate = modifedDate;
    }
 
    public void setCommentBody
(String commentBody) {
    this.commentBody = commentBody;
    }
    @Column(name="COMMENT_BODY")
    public String getCommentBody() {
    return commentBody;
    }
    public void setTopic_id(int topic_id) {
    this.topic_id = topic_id;
    }
    public int getTopic_id() {
    return topic_id;
    }
    public void setTopic(Topic topic) {
    this.topic = topic;
    }
    public Topic getTopic() {
    return topic;
    }
}


 


Id class which is used in the relationship :

Code:

package com
.codemiles.jpa;

/**
 * @author codemiles
 *
 */
public class Comment_Id implements java.io.Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private int topic_id;
    public Comment_Id(){
    
    
}
    public Comment_Id(int topic_Id){
    this.topic_id=topic_Id;
    }
    public void setTopic_id(int topic_id) {
    this.topic_id = topic_id;
    }
    public int getId() {
    return topic_id;
    }
    public boolean equals(Object o) {
        return ((o instanceof Comment_Id) && 
               
            topic_id 
== ((Comment_Id) o).getId());

    }

    public int hashCode() {
        return  topic_id ;
    }

}
 

_________________
Currenlty programming with : java , html , php , and javascript . (OCJP-6 certified )


TOP
 Profile Send private message  
Reply with quote  
Post new topic Reply to topic Quick reply  [ 1 post ] 
Quick reply


  


 Similar topics
 Topic title   Forum   Author   Comments 
 @Temporal JPA annotation  JPA  msi_333  0
 @QueryHint annotation to customize the query  JPA  msi_333  0
 Compound Key and IdClass annotation  JPA  msi_333  0
 @Transient annotation in JPA entity  JPA  msi_333  0
 Reference between two schemas in oracle  General Discussion  msi_333  0

All times are UTC [ DST ]


Users browsing similar codes

Users browsing this forum: No registered users and 1 guest



Jump to:  
Previous Code Snippet | Next Code Snippet 




Home
General Talks
Finished Projects
Code Library
Games
Tutorials

Java
C/C++
C-sharp
php
Script
JSP/Servlets
Ajax
ASP/ASP.net
Google SEO
Database
Communications
Phpbb3 styles
Photoshop tutorials
Flash tutorials
Find a job






Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team