I successfully create and execute a flexiblesearch query with a WHERE clause comparing a custom property, added to CartModel, with a enum value.
But I don't know how to "translate" it to try on HAC (just to try and fix it before coding inside a class).
In my class I've the working code:
String MY_QUERY = "SELECT {" + CartModel.PK + "} FROM {" + CartModel._TYPECODE + "} "
+ "WHERE " + "( {" + CartModel.RESERVATIONORDERSTATUS + "} = ?reservedOnHybris)";
And I set the reservedOnHybris parameter with
searchQuery.addQueryParameter("reservedOnHybris", ReservationOrderStatus.INITIAL_STATUS);
How can I translate this to try it on the FlexibleSearch panel in the HAC?
Thanks in advance.
Ale
This should work:
String MY_QUERY = "SELECT {" + CartModel.PK + "} FROM {" + CartModel._TYPECODE + "} "
+ "WHERE " + "( {" + CartModel.RESERVATIONORDERSTATUS + "} =
({{SELECT {crse.PK} FROM {" + CartReservationStatusEnum._TYPECODE
+ " as crse} WHERE {crse.code} = '" + ?reservedOnHybris + "'}}))"
You should get the PK of your enum, you could do this by using a select query.
Try :
SELECT {PK} FROM {Cart} WHERE {RESERVATIONORDERSTATUS} = "Your status"
Basically things like "CartModel.PK" could be replaced by the String.
Related
I have a JPA query with multiple joins and optional parameters , the query works fine if there is no multiple values sent in the status list parameter but if I send multiple values its giving exception as
"Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: An expression of non-boolean type specified in a context where a condition is expected, near ','.
Below is the query, could you please help
#Query(value = select distinct a.invn, a.accid, ac.accountCode, b.Fbusinesscode" +
", b.scode, i.invtype, d.dtid, d.did " +
" from INV.BINv a " +
"join READONLY.Fbusiness b on a.FbusinessId =b.FbusinessId " +
"join READONLY.Acc ac on a.accid=ac.accid " +
"join INV.Doc c on a.invid = c.invid " +
"join INV.Dstreq d on c.docid = d.docid " +
"join INV.dassoc e " +
"on d.dassocId = e.dassocId " +
"join BLNG.InvMType AS i on e.invtypeId = i.invtypeId "+
"where (?#{#requestdto.invoiceNumber } is null OR a.InvoiceEntityNumber = ?#{#requestdto.invoiceNumber}) and " +
" (?#{#requestdto.mod} is null OR i.InvTypeName = ?#{#requestdto.mod}) and " +
" (?#{#requestdto.getStatus} is null OR e.distrstttypecode in ?#{#requestdto.getStatus}) "
Something like this should do it:
#Query("select distinct a.invn, a.accid, ac.accountCode, b.Fbusinesscode" +
", b.scode, i.invtype, d.dtid, d.did " +
" from INV.BINv a " +
"join READONLY.Fbusiness b on a.FbusinessId =b.FbusinessId " +
"join READONLY.Acc ac on a.accid=ac.accid " +
"join INV.Doc c on a.invid = c.invid " +
"join INV.Dstreq d on c.docid = d.docid " +
"join INV.dassoc e " +
"on d.dassocId = e.dassocId " +
"join BLNG.InvMType AS i on e.invtypeId = i.invtypeId "+
"where (?#{#requestdto.invoiceNumber } is null OR a.InvoiceEntityNumber = ?#{#requestdto.invoiceNumber}) and " +
" (?#{#requestdto.mod} is null OR i.InvTypeName = ?#{#requestdto.mod}) and " +
" (?#{#requestdto.status?.size() ?: 0} = 0 OR e.distrstttypecode in ?#{#requestdto.status}) "
Note that in original query you specified requestdto.getStatus which should likely be just requestdto.status.
References:
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions-operator-elvis
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions-operator-safe-navigation
I am using Spring Boot and PostgreSQL to create a table in which I want to insert the latest data from another table.
I was using H2 and everything was fine but when I migrated to PostgreSQL, the error "SELECT ... FROM must be followed by a reference to the table appeared e.g. SELECT * FROM table as FOO" .
However, when modifying my query with AS, I am still having the same error.
"CREATE TABLE IF NOT EXISTS EOD AS " +
"(SELECT ID, " +
"CUSIP, " +
"NAME, " +
"ISIN, " +
"NAV, " +
"RIC, " +
"RTV," +
"VOLATILITY as volatility, " +
"CURRENCY as currency, "+
"ASK_ISSUER as ask_issuer, " +
"ASK_KECH as ask_kech, " +
"AVERAGE_SCORE as average_score, " +
"BID_ISSUER as bid_issuer, " +
"BID_KECH as bid_kech, " +
"BID_ONLY as bid_only, " +
"CREATOR as creator, " +
"DECENTER as decenter, " +
"DENOMINATION as denomination, " +
"FORCE_PUBLISH as force_publish, " +
"ISSUER_SPREAD as issuer_spread, " +
"KECH_MARGIN as kech_margin, " +
"KECH_SPREAD as kech_spread, " +
"DISTANCE_TO_BANDS_SCORE as distance_to_bands_score, " +
"DIFFERENCE_TO_LEXIFI_PRICE_SCORE as difference_to_lexifi_price_score, " +
"METRIC_C as metric_c, " +
"PRICE_EXPRESSION as price_expression, " +
"PRODUCT_TYPE as product_type, " +
"PUBLISHED as published, " +
"PUBLISHING as publishing, " +
"TIMESTAMP as timestamp " +
"FROM " +
"(" +
"SELECT * FROM RTDATABASE AS T " +
"JOIN (SELECT MAX(CONVERT(TIMESTAMP, DATETIME)) AS LATESTDATE FROM T GROUP BY ISIN)" +
") tm " +
"WHERE CONVERT(tm.TIMESTAMP, DATETIME) = tm.LATESTDATE) AS LATESTDATA;";
Any idea how to solve this issue?
Many thanks in advance !
I'm not familiar with XML and trying to get a bit network automation going. I get some XML responses like the following, and try to convert it to a hash or something to easily work with it. I have no idea if I'm doing something wrong. I get the output shown below.
Anyone can push me into a direction ? I tried the nokogiri documentation and guides, but I'm kinda lost.
My Data:
"show ip int brief vrf all | xml\r\n" +
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" +
"<nf:rpc-reply xmlns:nf=\"urn:ietf:params:xml:ns:netconf:base:1.0\" xmlns=\"http://www.cisco.com/nxos:1.0:ip\">\n" +
" <nf:data>\n" +
" <show>\n" +
" <ip>\n" +
" <interface>\n" +
" <__XML__BLK_Cmd_ip_show_interface_command_brief>\n" +
" <__XML__OPT_Cmd_ip_show_interface_command_operational>\n" +
" <__XML__OPT_Cmd_ip_show_interface_command_vrf>\n" +
" <__XML__OPT_Cmd_ip_show_interface_command___readonly__>\n" +
" <__readonly__>\n" +
" <TABLE_vrf>\n" +
" <ROW_vrf>\n" +
" <vrf-name-out>management</vrf-name-out>\n" +
" </ROW_vrf>\n" +
" </TABLE_vrf>\n" +
" <TABLE_intf>\n" +
" <ROW_intf>\n" +
" <intf-name>mgmt0</intf-name>\n" +
" <prefix>10.70.237.15</prefix>\n" +
" <ip-disabled>FALSE</ip-disabled>\n" +
" <iod>316</iod>\n" +
" <proto-state>up</proto-state>\n" +
" <link-state>up</link-state>\n" +
" <admin-state>up</admin-state>\n" +
" </ROW_intf>\n" +
" </TABLE_intf>\n" +
" </__readonly__>\n" +
" </__XML__OPT_Cmd_ip_show_interface_command___readonly__>\n" +
" </__XML__OPT_Cmd_ip_show_interface_command_vrf>\n" +
" </__XML__OPT_Cmd_ip_show_interface_command_operational>\n" +
" </__XML__BLK_Cmd_ip_show_interface_command_brief>\n" +
" </interface>\n" +
" </ip>\n" +
" </show>\n" +
" </nf:data>\n" +
"</nf:rpc-reply>\n" +
2.4.1 :363 > doc = Nokogiri::XML(my_data)
=> #<Nokogiri::XML::Document:0x173dda8 name="document">
2.4.1 :364 > doc.elements
=> []
Get rid of anything before <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> XML declaration - in you case, omit "show ip int brief vrf all | xml\r\n" line.
Once your document is parsed, follow official tutorial on searching - for a beginner IMHO it's best to avoid Xpath and just stick with .css selectors, which will be easy to grasp if you've ever done any CSS or Jquery.
I can run the following statement in SQL-developer
String fileInsertTrigger="CREATE OR REPLACE TRIGGER user_testtrigger12 "
+ "BEFORE INSERT ON user_test1 "
+ "FOR EACH ROW "
+ "DECLARE "
+ " CNT number ; "
+ " PKV user_test1.PARTY_ID%TYPE ; "
+ "BEGIN "
+ "SELECT COUNT(*) INTO CNT FROM user_test1 where PARTY_ID like ? and PARTY_ID not like ? ; "
+ "IF CNT=0 THEN "
+ "PKV:= ? ; "
+ " ELSE "
+ "SELECT ? || TRIM(LPAD(MAX(TO_NUMBER(SUBSTR(PARTY_ID,?,LENGTH(PARTY_ID)))+1),15)) into PKV "
+ "FROM user_test1 where PARTY_ID like ? and PARTY_ID not like ? ; "
+ "END IF ; "
+ ":NEW.PARTY_ID:=PKV ; "
+ "END " ;
and it works perfectly in database after putting all the required values in above query.
when I try to call it from a prepared statement in a jsp I get the following error
SQL Exception;java.sql.SQLException: Missing IN or OUT parameter at index:: 8
According to my analysis it is due to 'NEW' keyword.
Connection con=ConnectionDB.getConnection();
ArrayList dataHolder=FileUploadProcess.readExcelFile(u.getFileName());
ps=con.prepareStatement(SqlData.getFileinserttrigger());
System.out.println(u.getExtractString());
System.out.println(u.getExtractNumber());
ps.setString(1, u.getExtractString()+"%");
ps.setString(2, u.getExtractString()+"-%-%");
ps.setString(3, u.getExtractString()+"2");
ps.setString(4, u.getExtractString());
ps.setInt(5, u.getExtractNumber()+1);
ps.setString(6, u.getExtractString()+"%");
ps.setString(7, u.getExtractString()+"-%-%");
ps.executeQuery();
Has anybody got any ideas?
Thanks
My report donĀ“t accept the parameter.
I have created a parameter with "City" name.
In my code i want to full it:
ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(Server.MapPath("CrystalReport.rpt"));
crystalReport.SetParameterValue("City", lblCiudad.Text);
viewer.ReportSource = crystalReport;
the problem is that the report doesnt filter with my parameter, show without it.
Solution with formula:
crystalReportViewer.SelectionFormula = "{Clientes.Nombre} = '" + nombreCliente + "' AND {Registros.Host} = '" + host + "' AND {Registros.Servicio} = '" + service + "' AND {Registros.Fecha} <= " + "DateTime(" + fF.Year.ToString() + "," + fF.Month.ToString() + "," + fF.Day.ToString() + ","+fF.Hour.ToString() + "," + fF.Minute.ToString()+","+fF.Second.ToString()+") AND {Registros.Fecha} >= " + " DateTime(" + fI.Year.ToString() + "," + fI.Month.ToString() + "," + fI.Day.ToString() + ","+fI.Hour.ToString() + "," + fI.Minute.ToString()+","+fI.Second.ToString()+")";