Hi.
I have a problem with the JPA. My goal is to use a Button to add new records to a data source. I use the SmartGWT EE JPA. This is my first code, which does not work.
If I remove the foreignKey from the tree_DataSource.DS.xml, then I can add a Record to the DataSource. But a tree without foreign key is not a tree in the view!
I have a problem with the JPA. My goal is to use a Button to add new records to a data source. I use the SmartGWT EE JPA. This is my first code, which does not work.
If I remove the foreignKey from the tree_DataSource.DS.xml, then I can add a Record to the DataSource. But a tree without foreign key is not a tree in the view!
Code:
<DataSource
ID="tree_DataSource"
serverConstructor="com.isomorphic.jpa.JPADataSource"
beanClassName="com.detection.smiths.eapcfg.server.persistence.Tree"
>
<fields>
<field name="treeNodeId" type="sequence" hidden="true" primaryKey="true" />
<field name="parentNodeID" type="long" foreignKey="tree_DataSource.treeNodeId" title="pid" required="false" rootValue="1" detail="false"/>
<field name="referenceNodeID" type="long" title="rTyp" required="false" />
<field name="nodeTyp" type="text" title="Typ" required="true" />
<field name="nodeName" type="text" title="Name" required="true" />
<field name="wa" type="text" title="WA" required="true" />
</fields>
</DataSource>
Code:
package com.detection.smiths.eapcfg.server.persistence;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table (name="Tree")
public class Tree
implements Serializable
{
@Id
@Column (nullable = false)
@GeneratedValue (strategy = GenerationType.IDENTITY)
private Long treeNodeId;
@Column (nullable = false)
private String nodeName;
@Column (nullable = false)
private String wa;
@Column (nullable = false)
private String nodeTyp;
@Column (nullable = false)
private Long parentNodeID;
@Column (nullable = false)
private Long referenceNodeID;
public Tree ()
{
}
/**
* Returns a string representation of the object. Resulting string contains
* full name of the class and list of its properties and their values.
*
* @return <code>String</code> representation of this object.
*/
@Override
public String toString ()
{
return getClass().getName()
+ "["
+ "treeNodeId=" + ((getTreeNodeId() == null) ? "null" : getTreeNodeId().toString())
+ ", "
+ "parentNodeID=" + ((getParentNodeID() == null) ? "null" : getParentNodeID().toString())
+ ", "
+ "referenceNodeID=" + ((getReferenceNodeID() == null) ? "null" : getReferenceNodeID().toString())
+ ", "
+ "nodeTyp=" + ((getNodeTyp() == null) ? "null" : getNodeTyp().toString())
+ ", "
+ "nodeName=" + ((getNodeName() == null) ? "null" : getNodeName().toString())
+ ", "
+ "wa=" + ((getWa() == null) ? "null" : getWa().toString())
+ "]";
}
public Long getTreeNodeId() {
return treeNodeId;
}
public void setTreeNodeId(Long treeNodeId) {
this.treeNodeId = treeNodeId;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public String getWa() {
return wa;
}
public void setWa(String wa) {
this.wa = wa;
}
public String getNodeTyp() {
return nodeTyp;
}
public void setNodeTyp(String nodeTyp) {
this.nodeTyp = nodeTyp;
}
public Long getParentNodeID() {
return parentNodeID;
}
public void setParentNodeID(Long parentNodeID) {
this.parentNodeID = parentNodeID;
}
public Long getReferenceNodeID() {
return referenceNodeID;
}
public void setReferenceNodeID(Long referenceNodeID) {
this.referenceNodeID = referenceNodeID;
}
}
Code:
final DataSource treeDS = DataSource.get("tree_DataSource");
IButton addButton = new IButton("add record");
addButton.addClickHandler(new ClickHandler()
{
public void onClick (ClickEvent event)
{
Record r=new Record();
r.setAttribute("nodeName", "DE");
r.setAttribute("parentNodeID", 1);
r.setAttribute("referenceNodeID", 1);
r.setAttribute("nodeTyp", "ABC");
r.setAttribute("wa", "new WA");
treeDS.addData(r);
}
});
Code:
<persistence-unit name="ds" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
....
<class>com.detection.smiths.eapcfg.server.persistence.Tree</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
...
</properties>
</persistence-unit>
Comment