And so i am stuck, i'm developing a gwt web application, i'll be utilizing a tree(gwt Tree and TreeItems) structure to exhibit a listing of folders(class Folder) and files(class FileLocation), the folder and filelocation class will all implement a Hierarchy interface basing the classes around the composite pattern. however i am using hibernate to keep my data , and i'm using annotations for that mapping from the data towards the database. my the issue here is i don't understand how to annotate my interface.

have of everyone used the composite pattern while persisting the information with hibernate

public interface Hierarchy(){
// a few abstract methods that will be implemented by the sub classes
 }


@Entity
@Table()
public class Folder implements Serializable, Hierarchy {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "folder_id", updatable = false, nullable = false)
private int id;
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "FOLDER_FILELOCATION", joinColumns = { 
        @JoinColumn(name = "folder_id") }, inverseJoinColumns = { 
        @JoinColumn(name = "file_information_id") })
private List<Hierarchy> children = new ArrayList<Hierarchy>() ;
@Column(name = "folder_name")
private String folderName;
@Column(name = "tree_item")
private TreeItem item;
@Column (name = "parent")
private Hierarchy parent;



@Entity
@Table(name = "FILE_INFORMATION_TABLE")
public class FileInformation implements Serializable, Hierarchy {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "file_information_id", updatable = false, nullable = false)
private int fiId;
@Column (name = "location")
private String location;
@Column(name = "tree_item")
private TreeItem item;
@Column (name = "parent")
    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
    @JoinTable(name="FOLDER_FILELOCATION",
    joinColumns = @JoinColumn(name="filelocation_id"),
    inverseJoinColumns = @JoinColumn(name="folder_ID"))  
private Hierarchy parent;

Composite is extremely fundamental hibernate mapping and should not be considered a problem.
However i do not understand the Mapping. I suppose FOLDER_FILELOCATION is really a LinkTable between Folder and FileInformation. If that's the case you really don't have a OneToMany but a ManyToMany Relation. However, you can map it as being a OneToMany though.
What exaclty may be the problem you have? To obtain more precise solutions please spend more time explaining your concrete problem. Formatting the given code likewise helps but ok, i'll try it out.

I'm not exactly sure however i think in line with the model i suppose you've you should attempt this:

public interface Hierarchy(){
// a few abstract methods that will be implemented by the sub classes
}


@Entity
@Table(name = "FOLDER_TABLE")
public class Folder  implements Hierarchy, Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "folder_id", updatable = false, nullable = false)
    private int id;

    @OneToMany
    @JoinTable(
            name="FOLDER_FILELOCATION",
            joinColumns = @JoinColumn( name="folder_id"),
            inverseJoinColumns = @JoinColumn( name="filelocation_id")
    )   
    private List<Hierarchy> children = new ArrayList<Hierarchy>() ;

    @Column(name = "folder_name")
    private String folderName;

    @Column(name = "tree_item")
    private TreeItem item;

    @Column (name = "parent")
    private Hierarchy parent;
}

@Entity
@Table(name = "FILE_INFORMATION_TABLE")
public class FileInformation implements Hierarchy, Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "file_information_id", updatable = false, nullable = false)
    private int fiId;

    @Column (name = "location")
    private String location;
    @Column(name = "tree_item")
    private TreeItem item;

    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
    @JoinTable(name="FOLDER_FILELOCATION",
        joinColumns = @JoinColumn(name="filelocation_id"),
        inverseJoinColumns = @JoinColumn(name="folder_ID")
    )   
    private Hierarchy parent;
}

Hopefully this can help.