Binding two datagrid in one to many relationship
hello all,
I've my 2 object that rappresent that describe my XML file:
public class Page
public string PageName { get; set; }
public string Description { get; set; }
public ObservableCollection<Param> Params;
public class Param
public string Name { get; set; }
public string Address { get; set; }
public string Format { get; set; }
public string Description { get; set; }
The first datagrid, is populated in this way:
<Window x:Class="DataGridXML2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="400*" />
</Grid.ColumnDefinitions>
<DataGrid Name="grid1"
ItemsSource="{Binding Pages}"
SelectedItem="{Binding SelectedPage}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="pageName" Binding="{Binding PageName}"/>
<DataGridTextColumn Header="description" Binding="{Binding Description}"/>
</DataGrid.Columns>
</DataGrid >
</Grid>
</Window>
I'm in difficulty, I would show in a second grid list of parameters contained in the list "Params" by the selection of the item of the first grid. My ViewModel is :
namespace DataGridXML2.ViewModel
public class MainViewModel : ViewModelBase
private readonly IConfigService configService;
#region Pages
private ObservableCollection<Page> pages;
public ObservableCollection<Page> Pages
get { return pages; }
set
pages = value;
RaisePropertyChanged(() => Pages);
#endregion
#region SelectedPage
private Page selectedPage;
public Page SelectedPage
get
return selectedPage;
set
selectedPage = value;
RaisePropertyChanged(() => SelectedPage);
#endregion
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel(IConfigService configService)
this.configService = configService;
pages = configService.GetPages(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Visual Studio 2013\Projects\Binding\DataGridXML2\TEST.xml");
thanks in advance
Not sure if I'm missing something.
Isn't it just a matter of:
<DataGrid Name="grid2"
ItemsSource="{Binding SelectedPage.Params}"
Hope that helps.
Technet articles: Uneventful MVVM;
All my Technet Articles
Similar Messages
-
Bind two DataGrids so that a change in one will be refelected in another
Is there a simple way to bind two DataGrids so that a change in one will be refelected in another? I have two DataGrids. One will be editable and the other will be used to display the information from the editable DataGrid in a confirmation section. Is there a simple example out there for doing this?
Thanks,
LeeI may have figured it out. It seems to be working with:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="initComponent()"
xmlns:views="com.views.*"
width="100%"
height="100%">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
private var currentIndex:int=0;
private function initComponent():void
refreshList(null);
public function refreshList(event:Event):void
this.roArtist.getArtists();
private function getArtists_result(event:ResultEvent):void
dgArtistList.dataProvider=event.result as ArrayCollection;
dgArtistList.selectedIndex=currentIndex;
dgArtistListConfirm.dataProvider=event.result as ArrayCollection;
dgArtistListConfirm.selectedIndex=currentIndex;
]]>
</mx:Script>
<mx:RemoteObject id="roArtist"
showBusyCursor="true"
destination="ColdFusion"
source="art.src.cfc.artist">
<mx:method name="getArtists"
result="getArtists_result(event)">
</mx:method>
</mx:RemoteObject>
<mx:Label x="10"
y="10"
text="Entry"
fontWeight="bold"/>
<mx:DataGrid id="dgArtistList"
x="10"
y="36"
editable="true">
<mx:columns>
<mx:DataGridColumn dataField="ARTISTID"
headerText="ArtistID"
editable="false"/>
<mx:DataGridColumn dataField="FIRSTNAME"
headerText="First Name"
editable="true"/>
<mx:DataGridColumn dataField="LASTNAME"
headerText="Last Name"
editable="true"/>
</mx:columns>
</mx:DataGrid>
<mx:Label x="10"
y="210"
text="Confirmation"
fontWeight="bold"/>
<mx:DataGrid id="dgArtistListConfirm"
x="10"
y="236" dataProvider="{ArrayCollection}">
<mx:columns>
<mx:DataGridColumn dataField="ARTISTID"
headerText="ArtistID"/>
<mx:DataGridColumn dataField="FIRSTNAME"
headerText="First Name"/>
<mx:DataGridColumn dataField="LASTNAME"
headerText="Last Name"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
I need to do some testing.
Thanks! -
Merge Two Reports in Excel Analyzer - One To Many Relationship
I want to show AR Data with CO Data - e.g. a bill + Income and it's associated account ssignemnt on the FI/CO side. I want the report to be able to show a cost centre manager to be wary of the income credited to their cost centre when a debtor has been raisedaas they may not fully pay the bill. To do this I'm using the standard DSO for AR & GL line items. Fisrtly I run a query on GL line item data where the user can select from a cost centre variable to look at credits to their cost centre. This produces a list of source documents that are used (via replacement path variable) in a second query. The second GL Query gives me a list of the allocation numbers for those line items. Had to be two queres as there are two GL postings that needed linking (this is because the cost assignment comes from a ceratin acc type and the debtor information comes from another acc type). I then use the allocation number (again via a replacement path variable) to run a third query on the AR data that shows all bills and payments linked to that allocation number. It seems to work ok.
However I have put these three queries in an Excel Analyzer workbook. All the user does is enter a cost centre when running the report. Each query is on a different sheet but what I'd like to do is merge the data on to the one sheet. I want to see the bill and it's payments from the AR data matched up with the cost assignment from the FI/CO data. This would be a one to many relationship e.g. one bill may have it's cost assignment split over more than one cost centre. Is there anyway to do this using simple excel functionality?
So I'd like to see:
Allocation No. 12345 Bill £100 Revenue £50 Cost Centre 1234 £25
Cost Centre 2345 £25
Anybody any ideas?Hi,
Thanks for your answers.
I did explore using infosets but really struggled with joining the data and getting a sensible output. For example where a bill was done in installments I was getting 12 lines (e.g. one for each month) rather than just one. THis meant it looked liked they'd paid twleve times as much etc.
I did also try report to report. Which to my mind worked ok. Except the customer wanted it all in "One" report rather than having to drill down to see data.
I'll try a multiprovider but I'm worried that I'll end up with similar issues as I had when using the infoset.
Cheers
Joel -
How to implement one to many relationship between two Document Line Table
Hi,
I want to implement the following relationship into user defined tables:
Example Situation:
There are tables A, B and C.
For one record of Table A, there could be multiple records in table B.
For one record of Table B, there could be multiple records in table C.
i.e. A(1) -> B(n) [One to many relationship]
B(1) -> C(n) [One to many relationship]
finally: A(1) -> B(n) -> C(n)
How can I achieve this? If I make Table A as Document and table B & C as Document Line and then make them UDO, will it work? Kindly suggest me a solution.
Regards,
Sudeshna.Hi,
I think that the database representation is exactly what you ask for. 3 tables, A, B, C. A should have a UDF that is linked to B table, and B should have a UDF that is linked to C table.
You should manage the database transactions, and the UI to support all this stuff.
Regards,
IBai Peñ -
One to many relationship leads to recursion?
Hi,
I've created a web services function which returns an object retrieved from a database using the persistence api (the class was generated by the Netbeans 5.5 "Entity Class from Database" feature.
I can successfully return an object which has no foreign keys. However, when I try to retrieve an entity which is on either side of a 1:N relationship, I receive a stackOverflowError.
Here's my sample schema (I'm using Derby bundled with SJAS 9 for testing)
create table Address (
Id int not null,
StreetName varchar(255),
City varchar(255),
PostalCode varchar(255),
Party int,
primary key (Id)
create table Party (
Id int,
Name varchar(255),
primary key(Id)
alter table Address add constraint foreign key (Party) references Party;So as you can see, one Party might have many addresses.
I can retrieve either an Address or Party from the database using something like:
em.createNamedQuery("Party.findById")
.setParameter("id", 1)
.getSingleResult();When I try to return it, I get a stackOverflowError in the server log. I'm using the default Toplink provider so enabling full logging on this, I can see the SQL.
When retrieving an address, it selects all of the address fields and correctly binds the supplied Id value. It then performs a select on the Party table using the Address.Party value. This in turn causes it to attempt to retrieve an Address. After three queries, the error is thrown.
I can't see why the above schema should cause this problem. Where an Address is requested, I would expect it to retrieve the address fields, including the value of the Party field but not the Party object itself. On the other hand. when a Party is retrieved, I would expect it to recurse through and return a collection of Address objects.
Have I misunderstood this or am I missing some fundamental point about JAX-WS?
Thanks for your help,
-PhilYou have to set both sides of the relations...
for example to do this in a more seamless manner:
public UserProfile
public void addLog (UserActivityLog activity)
logs.add (activity);
if (!equals (activity.getUserProfile ()))
activity.setUserProfile (this);
Now this is the most primitive of ways to maintain two sided relations.
There are a lot of other patterns to get around this.
If you want to set the UserActivityLog to a specific UserProfile without
having a firm reference to ther UserProfile, you should get the object
from the database/persistenceManager... as you are using application
identity, you can do something like pm.getObjectById.
JDO does not do magic references. If you set something to null, it will
remain null until you set it.
Srini wrote:
Hi Guys
I am trying to create a one to many relationship between 2 JDOs.
UserProfile - User JDO having user info
UserActivityLog - JDO having user log info
UserProfile -- UserActivityLog
1 many
UserProfile - has a collection of UserActivityLog objects
UserActivityLog - has a reference to UserProfile
Qn 1:
I created a UserProfile along with a collection of 2 UserActivityLog
objects.
Navigation:
Now given a UserProfile object,i am able to get the UserActivityLog objects.
But given a UserActivityLog object ,i get a NULL UserProfile object.
Issues:
Why this is happening???Do i need to set the reference for "UserProfile" in
UserActivityLog before inserting???
If so,then how do i add a UserActivityLog to an existing
UserProfile???cos,if i create a UserActivityLog with reference to
UserProfile ,then it will throw a Duplicate Key violation for UserProfile as
it is already persisted in DB.
It will be great if you can direct me to some one to many relationship
examples already implemented.
Thanks
Srini
Stephen Kim
[email protected]
SolarMetric, Inc.
http://www.solarmetric.com -
ONE-to-MANY relationship between tables and forms in APEX
I recently started using APEX and I have run into an issue.
I have a ONE-TO-MANY relationship between two tables, A1 and A2, respectively.
A1:
A1_ID
Item
A2:
A2_ID
SubItem
A1_ID
I have 2 forms (lets call it F1 and F2) that I use to capture data for A1 and A2.
On F2, I have the following fields that are setup to capture data:
A2.A1_ID
**A1.Item (this is a drop down that is populated using a SELECT statement where the select uses A1.Item field)
A2.SubItem (user would enter SubItem)
Note: A2.A2_ID is populated using a SEQ
Everytime I pick **A1.Item on F2, is there a way to link to A1 table and display A1.A1_ID for every **A1.Item selected on F2?
If so, I want to store the value captured in F2 for the A1_ID field into A2 table to maintain my 1-to-MANY relationship.
If this will work, how do I go about implementing this solution?
Can someone help me?I think it sounds like you are asking for a Master-Detail form. Try that and see what you get.
chris. -
How do I create a One to many relationship page in Dreamweaver?
How do I create a page in dreamweaver that comes up after the user logs in from the log in page that will allow the user to:
Add, change and delete in 2 tables that are in my MYSQL database that is a one to many relationship
One thing that is confusing is how the foreign key that links to the one side of the relationship is created in the many side without the user inputting the foreign key each time adding information to the many side table.
I am creating this in Dreamweaver using a MYSQL database and PHP.>Would the following be a part of it:
>
>Outer join
Probably not. When updating/inserting/deleting from 2 tables you perform each seperately. Table updates may join two or more tables to resolve the correct row(s) but you still only update one table at a time. Procedurally you would create a transaction, update the first table, update the second table and then commit the transaction.
EDIT: Well I take back my last comment. I see that MySQL does seem to support multiple table updates. I don't use MySQL so I can't really help you on that but the MySQL manual gives pretty clear syntax. -
Newbie: one to many relationship SQL error
Greetings all-
This is probably a slam dunk for you JDO experts. I'm a JDO newbie, working
with an existing schema in MySQL. I have a one to many relationship between
two tables:
Table "company":
Fields:
company_id: int(11) -- primary key
name : varchar(64)
division : varchar(64)
Table "company_products"
Fields:
company_id: int(11) -- foreign key to table company
product_name: varchar(64)
product_description: varchar(64)
So, I created the corresponding classes:
public class Company {
private int companyID;
private String company_name;
private String division;
// Array of CompanyProduct
private ArrayList companyProducts;
// .. methods omitted
public class CompanyProduct {
private int companyID;
private String productName;
private String productDesc;
// Methods omitted
Then I created the "package.jdo" file:
<?xml version="1.0"?>
<jdo>
<package name="com.packexpo.db">
<class name="Company">
<extension vendor-name="tt" key="table" value="company"/>
<extension vendor-name="tt" key="pk-column" value="company_id"/>
<extension vendor-name="tt" key="lock-column" value="none"/>
<extension vendor-name="tt" key="class-column" value="none"/>
<field name="companyID">
<extension vendor-name="tt" key="data-column" value="company_id"/>
</field>
<field name="name">
<extension vendor-name="tt" key="data-column" value="name"/>
<extension vendor-name="tt" key="column-length" value="64"/>
</field>
<field name="division">
<extension vendor-name="tt" key="data-column" value="division"/>
<extension vendor-name="tt" key="column-length" value="64"/>
</field>
<field name="companyProducts">
<collection element-type="com.packexpo.db.CompanyProduct"/>
<extension vendor-name="tt" key="inverse" value="companyID"/>
</field>
</class>
<class name="CompanyProduct">
<extension vendor-name="tt" key="table" value="company_product"/>
<extension vendor-name="tt" key="pk-column" value="company_id"/>
<extension vendor-name="tt" key="lock-column" value="none"/>
<extension vendor-name="tt" key="class-column" value="none"/>
<field name="companyID">
<extension vendor-name="tt" key="data-column" value="company_id"/>
</field>
<field name="productName">
<extension vendor-name="tt" key="data-column" value="product_name"/>
<extension vendor-name="tt" key="column-length" value="64"/>
</field>
<field name="productDesc">
<extension vendor-name="tt" key="data-column"
value="product_description"/>
<extension vendor-name="tt" key="column-length" value="64"/>
</field>
</class>
</package>
</jdo>
Enhancement works fine. I successfully query and retrive Company objects
from the database, but as soon as I try to get the list of CompanyProducts,
I get an SQL Error:
javax.jdo.JDODataStoreException: [SQL=SELECT company.COMPANYPRODUCTSX FROM
company WHERE company.company_id = 82061]
E0610 Error in executeQuery()
E0606 executeQuery() error --
E0701 Error in getResult().
E0708 Command results in error - 1054 Unknown column
'company.COMPANYPRODUCTSX' in 'field list'
NestedThrowables:
com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper: [SQL=SELECT
company.COMPANYPRODUCTSX FROM company WHERE company.company_id = 82061]
E0610 Error in executeQuery()
E0606 executeQuery() error --
E0701 Error in getResult().
E0708 Command results in error - 1054 Unknown column
'company.COMPANYPRODUCTSX' in 'field list'
I know i have probably set up the package.jdo file incorrectly, but I'm at a
loss for what I did wrong.
Any suggestions?
Thanks!
-MikeHi,
915766 wrote:
I need to write sql for below requirement:
table structure is
serial no LPN
1 4
2 4
3 6
4 6
5 6
6 3
7 3
8 3
9 1
I have to pick distinct 'LPN' like below:That sounds like a job for "GROUP BY lpn".
(any serial no can be picked for the distinct LPN)It looks like you're displaying the lowest serial_no for each lpn. That's easy to do, using the aggregate MIN function.
results needs to be as below:
serial no LPN
1 4
3 6
6 3
9 1
Please suggest with sql.Here's one way:
SELECT MIN (serial_no) AS serial_no
, lpn
FROM table_x
GROUP BY lpn
ORDER BY lpn -- if wanted
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only), and also post the results you want from that data.
Explain, using specific examples, how you get those results from that data.
Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
See the forum FAQ {message:id=9360002} -
One-to-many relationship: problem with several tables on the one side...
Hello
I'm having problems developing a database for a content management system. Apart from details, I've got one main table, that holds the tree structure of the content ("resources") and several other tables that contain data of a particular datatype ("documents", "images", etc.). Now, there's one-to-many relationship between "resources" table and all the datatype tables - that is, in the "resources" table there's "resource_id" column, being a foreign key referenced to the "id" columns in the datatype tables.
The problem is that this design is deficient. I can't tell form the "resource_id" column from which datatype table to get the data. It seems to me that one-to-many relationship only works with two tables. If the data on the one side of the relationship is contained in several tables, problems arise.
Anybody knows a solution? I would be obliged.
Regards
HavocadoHi;
A simple way may be create a view on referenced tables:
Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0
Connected as hr
SQL>
SQL> drop table resources;
Table dropped
SQL> create table resources(id number, name varchar2(12));
Table created
SQL> insert into resources values(1,'Doc....');
1 row inserted
SQL> insert into resources values(2,'Img....');
1 row inserted
SQL> drop table documents;
Table dropped
SQL> create table documents(id number, resource_id number,type varchar2(12));
Table created
SQL> insert into documents values(1,1,'txt');
1 row inserted
SQL> drop table images;
Table dropped
SQL> create table images(id number, resource_id number,path varchar2(24));
Table created
SQL> insert into images values(1,2,'/data01/images/img01.jpg');
1 row inserted
SQL> create or replace view vw_resource_ref as
2 select id, resource_id, type, null as path from documents
3 union
4 select id, resource_id, null as type, path from images;
View created
SQL> select * from resources r inner join vw_resource_ref rv on r.id = rv.resource_id;
ID NAME ID RESOURCE_ID TYPE PATH
1 Doc.... 1 1 txt
2 Img.... 1 2 /data01/images/img01.jpg
SQL> Regards.... -
One to Many Relationship Issue
Post Author: jmb1977
CA Forum: Formula
I am having a problem in which I have a one to many relationship with contact phone numbers and students. In other words, one student can have multiple contacts. (I work for a school district)
I made up two formulas...called Contact1Phone and Contact2Phone.
Here is the code I use to display the data:
IF {STUDCTCT.CNTNUMBER} in ["C1"] THEN STDUCTCT.CNTWPHONE
Then the other formula does the same, except uses "C2".
What I get is either C1 or C2 displays, but never both for the same student. Anyway to make this work? Any help on this would be greatly appreciated!Post Author: jmb1977
CA Forum: Formula
I forgot to add, I do know that placing STUDCTCT.CNTNUMBER in [C1,C2] as a selection then just simply place the CNTWPHONE field into the details section of the report will give me the results. But the reason why I am trying it the other way is that I can export the data as one record per student, thus I am trying to put the fields and formulas into the group section. -
One-to-many relationships problem
Hi,
I'm having some problems with one-to-many relationships.
I've a two way relationship beetwen Person and Document.
Person has a collection of Documents (1-n).
Document has an instance for Person.
In my database schema Document has a FK for person.
The problem occurs when I'm trying to save the Person object
with a collection of Documents.
Oracle gives me the following message:
ORA-00001: unique constraint (SMS.PK_PERSON) violated
In my kodo.properties file I put:
kodo.jdbc.ForeignKeyConstraints: true
It seems that when the collection of Documents is persisted, kodo tries to
save a new Person object for each Document.
When I have just one instance of Document in my collection kodo persists
it ok, but when I have move instances I get
that problem.
Can somebody help me?
Thanks in advance,
Joan CaffeeYou need to make sure each Document references the same Person object in
the JVM. JDO persists your object model as-is. Each distinct JVM
object becomes a distinct database record. You can't have multiple JVM
objects in the same PersistenceManager representing the same database
record. -
One to many relationships in EJB
I have two EBs related by a one to many relationship. The first of these tables is called Student and has studentId as its key. The second of the tables has a composite key made up of studentID, courseID and semesterID.
However, when the tables are generated in NetBeans 5.5, I find that the Course table has studentID as both a primary key and a foreign key.
I am at a loss to understand this as I am new to NetBeans and EJB.
Can anyone advise?
Thanks
Martin O'Shea.
The Student class:
package CBSD_CW;
import java.io.Serializable;
import javax.persistence.*;
import java.util.*;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Student_EB implements Serializable {
// Table columns.
@Id
@Column(name = "STUDENT_ID", nullable = false)
private Long studentId; // Student ID. Entity <Student><ID> from file: SampleData.xml.
@Column(name = "FIRST_NAME", length = 50, nullable = true)
private String firstName; // First Name. Entity <Student><FirstName> from file: SampleData.xml.
@Column(name = "LAST_NAME", length = 50, nullable = true)
private String lastName; // Last Name. Entity <Student><LastName> from file: SampleData.xml.
@Column(name = "STUDENT_LEVEL", length = 2, nullable = true)
private String studentLevel; // Student Level. Entity <Student><Level> from file: SampleData.xml.
@Column(name = "PROGRAM_NAME", length = 50, nullable = true)
private String programName; // Program Name. Entity <Student><ProgramName> from file: SampleData.xml.
@Column(name = "PROGRAM_NUMBER", length = 3, nullable = true)
private String programNumber; // Program Number. Entity <Student><ProgramNumber> from file: SampleData.xml.
// 1:M relationship with Course_EB.
@OneToMany(cascade=CascadeType.ALL, mappedBy="student")
private List<Course_EB> courses;
public List<Course_EB> getCourses() {
return courses;
public void setCourses(List<Course_EB> courses) {
this.courses = courses;
// Accessors and mutators.
public Long getId() {
return this.studentId;
public void setId(Long studentId) {
this.studentId = studentId;
public String getFirstName() {
return firstName;
public void setFirstName(String firstName) {
this.firstName = firstName;
public String getLastName() {
return lastName;
public void setLastName(String lastName) {
this.lastName = lastName;
public String getStudentLevel() {
return studentLevel;
public void setStudentLevel(String studentLevel) {
this.studentLevel = studentLevel;
public String getProgramName() {
return programName;
public void setProgramName(String programName) {
this.programName = programName;
public String getProgramNumber() {
return programNumber;
public void setProgramNumber(String programNumber) {
this.programNumber = programNumber;
// Other methods.
public boolean equals(Object obj) {
if (obj == this) {
return (true);
if (!(obj instanceof Student_EB)) {
return (false);
if (obj == null) {
return (false);
Student_EB student = (Student_EB) obj;
return (student.studentId == studentId);
The Course class:
package CBSD_CW;
import javax.persistence.CascadeType;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
@Entity
public class Course_EB implements java.io.Serializable {
Course_PK course;
// M:1 relationship with Student_EB.
private Student_EB student;
@ManyToOne(cascade=CascadeType.ALL)
@JoinTable(name = "Student_EB", joinColumns= @JoinColumn(name = "STUDENT_ID", referencedColumnName = "studentId"))
public Student_EB getStudent() {
return (student);
public void setStudent(Student_EB student) {
this.student = student;
// Constructor.
public Course_EB() {
// Accessors and mutators.
@EmbeddedId
public Course_PK getCourse_PK () {
return (course);
public void setCourse_PK(Course_PK course) {
this.course = course;
The Course_PK class:
package CBSD_CW;
import javax.persistence.Column;
import javax.persistence.Embeddable;
@Embeddable
public class Course_PK implements java.io.Serializable {
// Table columns.
@Column(name = "STUDENT_ID", length = 4, nullable = false)
private long studentId; // Student ID. Entity <Student><ID> from file: SampleData.xml.
@Column(name = "COURSE_ID", length = 4, nullable = false)
private String courseId; // Course ID. Entity <Student><Course><Number> from file: SampleData.xml.
@Column(name = "SEMESTER_CODE", length = 3, nullable = false)
private String semesterCode; // Semester Code. Entity <Student><Course><SemesterCode> from file: SampleData.xml.
@Column(name = "GRADE", nullable = true)
private char grade; // Grade. Entity <Student><Course><Grade> from file: SampleData.xml.
// Constructors.
public Course_PK() {
public Course_PK(long studentId, long courseid, String semesterCode) {
this.studentId = studentId;
this.courseId = courseId;
this.semesterCode = semesterCode;
// Accessors and mutators.
public long getStudentId() {
return (studentId);
public void setStudentId(long studentId) {
this.studentId = studentId;
public String getCourseId() {
return (courseId);
public void setId(String courseId) {
this.courseId = courseId;
public String getSemesterCode() {
return (semesterCode);
public void setSemesterCode(String semesterCode) {
this.semesterCode = semesterCode;
public char getGrade() {
return (grade);
public void setGrade(char grade) {
this.grade = grade;
// Other methods.
public boolean equals(Object obj) {
if (obj == this) {
return (true);
if (!(obj instanceof Course_PK)) {
return (false);
if (obj == null) {
return (false);
Course_PK course = (Course_PK) obj;
return ((course.studentId == studentId) &&
(course.courseId.equals(courseId)) &&
(course.semesterCode.equals(semesterCode)) &&
(course.grade == grade));
}Because you have field
@Column(name = "STUDENT_ID", length = 4, nullable = false)
private long studentId; // Student ID. Entity <Student><ID> from file: SampleData.xml.In you Course_PK class. As a primary keys.
An again you are joining it in field
@ManyToOne(cascade=CascadeType.ALL)
@JoinTable(name = "Student_EB", joinColumns= @JoinColumn(name = "STUDENT_ID", referencedColumnName = "studentId"))So it is appearing both inPrimary Key and in Foreign Key. -
Update one to many relationship
Since cfgridupdate is somewhat buggy, does anyone have a
better suggestion to edit/update two tables with a one-to-many
relationship? Any suggestions are welcome.cfquery
-
Need help mapping one-to-many relationship
[Sorry, inadvertently cross-posted]
Hello,
I have a one-to-many mapping question that's probably a no-brainer for the
experts of the group out there. My problem is that I can't get a collection
of Items for a given Theme to be populated and I don't know if it's a
problem in my system.jdo or in my classes (or both). For example, for Theme
10,
I want a collection of two Items, item_ids 1 and 2.
I have db tables named ITEM and THEME with the following layouts:
ITEM
|==========================================================|
| item_id(pk) | item_name | item_number | theme_id(fk) |
|==========================================================|
| 1 | This is Item1 | 1234 | 10 |
| 2 | This is Item2 | 2954 | 10 |
| 3 | This is Item3 | 2094 | 17 |
| 4 | This is Item4 | 946 | 11 |
| ... |
|==========================================================|
THEME
|=======================================|
| theme_id(pk) | theme_description |
|=======================================|
| 4 | Space |
| 10 | Town |
| 11 | Train |
| 17 | Pirate |
| ... |
|=======================================|
I have two PersistenceCapable classes that map to the above tables:
package com.lego.data;
public class Item
public int item_id;
private String item_number;
private String item_name;
private int theme_id;
public Theme theme;
public String toString()
return
item_number+":"+item_name+":"+theme.getCode()+":"+theme.getDescription();
package com.lego.data;
import java.util.*;
public class Theme
public int theme_id;
public String theme_description;
public Collection items;
public String toString()
return theme_id+":"+theme_description;
and here is my system.jdo file:
<?xml version = "1.0" encoding = "US-ASCII"?>
<jdo>
<package name="com.lego.data">
<class name="Item" identity-type="application"
objectid-class="com.lego.data.IntOId">
<extension vendor-name="kodo" key="table" value="item"/>
<extension vendor-name="kodo" key="lock-column" value="none"/>
<extension vendor-name="kodo" key="class-column" value="none"/>
<field name="item_id" primary-key="true">
<extension vendor-name="kodo" key="data-column" value="item_id"/>
</field>
<field name="item_number">
<extension vendor-name="kodo" key="data-column" value="item_number"/>
</field>
<field name="item_name">
<extension vendor-name="kodo" key="data-column" value="item_name"/>
</field>
<field name="theme_id">
<extension vendor-name="kodo" key="data-column" value="theme_id"/>
</field>
<field name="theme">
<extension vendor-name="kodo" key="theme_id-data-column"
value="theme_id"/>
</field>
</class>
<class name="Theme" identity-type="application"
objectid-class="com.lego.data.ThemeKey">
<extension vendor-name="kodo" key="table" value="theme"/>
<extension vendor-name="kodo" key="lock-column" value="none"/>
<extension vendor-name="kodo" key="class-column" value="none"/>
<field name="theme_id" primary-key="true">
<extension vendor-name="kodo" key="data-column" value="theme_id"/>
</field>
<field name="theme_description">
<extension vendor-name="kodo" key="data-column"
value="theme_description"/>
</field>
<field name="items">
<collection element-type="Item"/>
<extension vendor-name="kodo" key="inverse" value="theme"/>
</field>
</class>
</package>
</jdo>
Thanks in advance for the help.
-TimAbe White wrote:
The first thing to check is that you are always setting the "theme" field in
your Items. If you add an Item i to the "themes" collection of a Theme t, but
forget to also set i's "theme" field to t, then the change will never get
written to the database.
Next, make sure that whenever you set the "theme" field of an Item, you also
set
its "theme_id" field. You map both of these fields to the same column, so you
better be sure they stay in synch.
On a related note, you might try making the "theme_id" field non-persistent if
things still aren't working for you. Mapping two fields to the same column
might be causing trouble. It would be safer to make theme_id non-persistent
anyway, and to always grab the id from the Theme stored in your "theme"
field.
Better OO programming and all that, though I can see that you might have
performance issues in mind when doing it your way.
Anyway, if you find that it works when you make theme_id nonpersistent, let us
know and we'll see why the double-mapping of the column is causing problems,
and hopefully find a fix.Abe,
Thanks for the response but I'm still confused. I failed to mention that
the Item and Theme tables are in an existing schema, so as you saw in my
system.jdo, I am specifying application identity.
Since this is an existing schema, the Item table has theme_id as the
foreign key to the Theme table. So are saying that it is a problem to map
the both theme_id as a data column and a Theme object in the Item at the
same time?
I guess what I don't understand is exactly what my system.jdo should look
like to map a one-to-many relationship. In my case, from Theme (1) to Item
(many). (See my system.jdo in previous post).
Thanks
-Tim -
Using data from one-to-many relationship
Hi,
i have an one-to-many relationship among two tables similar to the structure as in the below reference:-
[One-to-many-reference|http://docs.oracle.com/cd/E23507_01/Platform.20073/RepositoryGuide/html/s1204repositoryexamplefonetomanymappi01.html]
taking this as an example, i have the city's name with me. using this data in the addr_tbl in the 'address' item-descriptor, i need to get the value of the 'name' in the usr_tbl in the 'user' item descriptor. i will have the list of 'city' with me which i have to iterate and display the corresponding 'name'.
will i be able to perform this in the jsp itself or does it have to be done in java? a sample code snippet or reference for doing this will be of much help.
thank you.Thanks a lot, Sheik.
if i have to do the reverse, ie for the 'name' in the usr_tbl of user item-descriptor i have to fetch the 'city' values in the addr_tbl, will it suffice if i do the following?
<dsp:droplet name="/atg/dynamo/droplet/RQLQueryForEach">
<dsp:param name="queryRQL" value="name=\"sirius\""/>
<dsp:param name="repository"
value="/com/MyRepository"/>
<dsp:param name="itemDescriptor" value="user"/>
<dsp:oparam name="output">
<dsp:valueof param="element.address.city"/>
</dsp:oparam>
</dsp:droplet>
Maybe you are looking for
-
somehow I must've clicked a button that took away my drop down box when I go to use my Google search so different sites that I go to a lot I would always just click it when the drop-down box came up I would click again and hit search and you would br
-
How do I transfer the iTunes Match songs downloaded on my computer to my iPhone?
I downloaded all of my songs from iTunes Match to my computer and was hoping to transfer them via USB to my iPhone. It appears that the only way to get them on my phone is to download them from the could though. Is there a way to transfer the songs t
-
Has nayone come across ".psp" files? I think it may be Print Shop Pro. Is there a way to open or convert them with other software, perhaps iPhoto? Thanks.
-
Hi George, 500 users sending 4 not very heavy objects does not seem like a lot. I would guess that you would see some brief sluggishness in the clients, followed by normal behavior. Before you act on this, I reccomend setting up a test to simulate th
-
Search 'filename contains' in finder. Help please
Hello. I need to search my filesystem for any files containing the words "foo" (for example). Currently, when I type 'foo' into my finder search bar, it returns only those filenames starting with the word 'foo'. Can anyone tell me the way to adjust s