With JPA, EclipseLink, JSF and reporting dynamically - jsf

I have 3 database tables and each table is represented by an Entity Class. What I want to do is to Join these three tables with a special condition and select maximum one column from each table wrap them in an object and display this object on the JSF tier using a data table.
Is it possible to do this using dynamic entity class without playing with my entity classes? Has anyone got a solution for this problem?
Will appreciate any help
Thanks a lot

You can use a constructor query, or just simply select multiple values and get an Object[] back.
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#Constructors
You could also just select the objects, then extract what you need from them in Java.

Related

Most efficient way to join data from two views

Folks:
I have recently begun working with xPages. I have a view of documents that needs to present data from other related documents in six separated columns. What I am trying is to use a Computed column that does a lookup to a view with a concatenated string. My intention was to parse this into the 6 columns of data. It isn't working and it may be silly of me to try referring to a computed column in another computed column.
Another alternative was to have the underlying view present the UNID of the other document and then do a #GetDocField on the xPages view.
So I have two questions:
1) May I programmatically refer to a Computed column in a view from another Computed column?
2) For efficiency, what would be the best way to present data like a 'join' in a view?
I appreciate your attention and help.
Cheers,
John Collis
Can you try to “go native” ? You build one view that contains both documents arranged to be in that view after each other. So you have Type1,Type2,Type1,Type2 etc.
Then use a repeat control to render a table or list “joining” the two rows.
This would save you doing tons of lookups.
Eventually you use that view as Json Rest source to do the joining in Json
I would create a Java bean that returns a list of Java objects that contain your data.

Concatenated SQL fields in selector and/or custom PXDimension

We have a set of BLC/DAC for a customization that has multiple tables with the given relationship
Table1 - T1ID (int-autoincrement), T1CD (char-substitute key)
Table2 - T2ID (int-autoincrement), T2CD (char-subsitute key), T1ID (reference to T1ID)
where the records in Table2 are unique for each given T1ID selected.
The initial design specification was for the users to select first the Table1 value, then the Table2 value (UsrTable1Value, UsrTable2Value respectively) in the data entry screens.
The users have recently asked if it's possible to combine these into one field simular to a Dimension selector so that there is one field resulting in "Table1-Table2" stored as T2ID.
My first thought was to simply create a subclassed dac with a concatenated property for T1CD-T2CD and base the substitute key off that however performance is a problem when that is done (1.6 million records). The delay is in the framwork side as it appears it processes the entire recordset when generating the concatenated substitute key.
Based on that I thought perhaps instead to simply generate a PXDimension configuration for this however I can't find any reference to make Dimension 2 rely on the value of Dimension 1.
I know i could always create a view that does this but i'd prefer to keep it within the framework if possible.
That basically brings me to two questions
1) Outside of a view, is there way to concatenate fields in the BQL so the lifting is done on the SQL and not with a calculated property?
2) Does anyone have or know of a sample of custom Dimensions where the values in level 2 depend on the value in level 1?
Any suggestions would be appreciated.
Out of the box, dimension selectors are designed to work only with Segmented Keys and won't be able to handle values from multiple tables. In theory, it can be possible to populate segment popup from different tables within a custom DimentionSelectorAttribute. However, this will additionally require to store each T1ID/T2ID pair in a separate table with some other column declared as a key (same concept used in the Sub table to store sub accounts: SubID is a key and SubCD stores values composed from multiple segments).
My personal opinion, the effort is just not worth it. Going one step further, I would check with the customer on how they expect navigation buttons (first, prev, next, last) to work with their segmented input control? If following standard Acumatica UI design with separate input created for every key field, no additional effort is needed to properly handle both data entry and navigation.

Insert new data to a blank row in core data

I want to add data (string) to one of the blank row in core data (iOS). How do you do that?
e.g : I have an entity of STUDENTS and in that entity has 3 attributes : index, name, age. the 3 attributes are filled with data, let's say it has 10 row of data. But on index 9 the attribute of name has no data (blank space). How do you fill that blank space ?
I can't describe it clearly because I can't upload an image yet.
You shouldn't think of Core Data as a database with rows and columns. It is an Object Graph and Persistence framework. So you deal with Objects (like rows) and object properties (like columns). So once you have fetched or created some objects you set their properties.
If you haven't created NSManagedObject subclasses from your object model then you have to use the KVC accessors:
[student10 setValue:#"William" forKey:#"name"];
If you do create subclasses you can use Objective-C properties.
student10.name = #"William";
I recommend reading more about Core Data in the Apple Documentation to gain a proper understanding of the framework. They also have some tutorials I think.

Core Data Relationship shown in tableView

I am developing an application with a tableview showing the content of a core data table.
The datamodel is something like this:
Entity(name, code)->>Translation(text, code)
I retrieve all the entities using the usual NSFetchedResultsController, but then once is time to populate each row (through tableview cellForRowAtIndexPath:) I have to dive into each entity to retrieve 2 translations based on the code inputed by the user. I am using a NSFetchRequest to do that but I was wondering if it is the right thing to do (one fetch request each time I populate a row).
Instinctively I would retrieve all the data I need in the NSFetchedResultsController, instead of searching for each translation each time I populate a cell, but I cannot figure out how.
Do anyone has some advice, or maybe some interesting links?
If each cell must display the Translation objects related to each Entity object, then you only need to walk the relationship from the fetched Entity object to the appropriate Translation objects.
Once you've fetched the Entity objects and then structured the table to display them, then to access the values in the translations for each cell row like so:
NSSet *translations=[anEntityObject valueForKey:#"translations"];
... which returns a set of Translation object for the Entity object represented by the tableview row.
As a very general rule, you only do one fetch per tableview. A table view should be configured to display data related to one particular entity.

Adding Column Using Subsonic 3.0.0.5 Migration

I want to know that How to Insert New Columns to an existing database Table using Subsonic 3.0.0.5 MIGRATIONS.
Basically I want to alter an existing table in MS SqlServer database and add three more columns into it.
Please tell me How I will be able to do it
Regards,
Naveed Khan
Just change your object and the column will be added/updated whatever. So if you have an object called "Post" and add a property, it will be added as a column in the DB.
See this video...
http://subsonicproject.com/docs/Simple_Repo_5_Minute_Demo
It has to do with the conventions of SubSonic.
As the object is singular, it adds the plural to the table (or expects the table to be plural).
So it will expect an object called Order to map to a table called Orders.
There is only two solutions that I can see for you
1) Rename you table to the plural name.
2) Modify Subsonic code to remove the adding of the plural.

Resources