要获取一些数据我正在创建一个SQL查询:)
当然有一些过滤和订购部分.
为了获得结果,我使用"NamedParameterJdbcTemplate",当我需要向"where"部分添加内容时,我使用参数map来防止注入.
但它与"order by"部分不同,因为没有自动转义(并且它是sql的一部分).此订单部分有时会填充来自用户的数据(直接),有时会从代码内部添加一些额外的排序参数.有一个问题:有时这个排序字段不仅包含列名,还包含sql语句.
现在,通过将一些字符(如')替换为空字符串来手动转义排序的每个参数,但是我们为代码设置的一些参数传递此规则有点复杂.
当您使用jdbc模板时,在查询的排序部分中阻止sql注入的最佳方法是什么?
我的代码如下:
@Entity
@Table(name = "A")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class A
{
@OneToOne(cascade={CascadeType.ALL}, fetch=FetchType.EAGER, mappedBy="a")
public B getB() {};
}
@Entity
@Table(name = "B")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class B
{
@OneToOne(cascade={}, fetch=FetchType.LAZY)
@JoinColumn(name="A_ID")
public A getA() {};
}
Run Code Online (Sandbox Code Playgroud)
每次A加载时都有查询B.为什么加载A.getB()后没有缓存,A是否可以缓存它?
我有一些我需要连接的旧数据库(postgres 9.1).我没有问题启动服务器
pg_ctl start -D D:\datadir\pgdata\data -w
Run Code Online (Sandbox Code Playgroud)
但是当我尝试连接时,它会给出:
psql -U postgres -p 15432
psql: FATAL: database locale is incompatible with operating system
DETAIL: The database was initialized with LC_COLLATE "Norwegian (Bokmål)_Norway.1252", which is not recognized by setlocale().
HINT: Recreate the database with another locale or install the missing locale.
Run Code Online (Sandbox Code Playgroud)
新版本的postgres无法启动服务器(不兼容的数据版本).我正在使用Windows 10,带有postgres 9.1二进制文件.
如何连接,迁移,升级此类数据库以访问其数据?
我有一些信息/通知小部件,甚至在某些情况下也应显示。我的想法是要有一个小部件隐藏在左上角,并在需要时显示。问题是,如果我只是在其中放置简单的小部件并将其显示,则所有内容都将移至右侧,我想要的是将该小部件显示在该区域中的任何内容的顶部(它将隐藏那里的内容,但是没关系)。我不能使用堆叠式小部件,因为信息小部件与其他小部件的尺寸不同。如果我仅创建浮动窗口小部件并将其移动到该区域,则如果移动主窗口也不会移动。有什么办法吗?
我有一个使用Xamarin for android创建的小型应用程序,其中有WebView用于显示一些数据,而不是使用C#代码备份它来存储数据。为了从webview获取数据,我使用javascript,在C#中,我有这样的方法:
[Export("addMood2")]
[JavascriptInterface]
public String saveData(string data) { ...}
Run Code Online (Sandbox Code Playgroud)
然后我从JS代码中调用它(我有webView.AddJavascriptInterface和所有必需的东西)。因此,如果我传递字符串,它就可以工作,但是当然在javascript中,我会创建一些对象以及要保存的对象(它或多或少总是相同的结构),因此,现在我将其字符串化,而不是作为字符串传递,在C#端进行解析并具有数据。但是是否可以直接从JS传递该对象-作为Dictionary或某些映射结构?如果我尝试使用“ saveData(Java.Lang.Object数据)”数据始终为null,那么我猜它不喜欢类型映射。
我有一个项目,其中头文件在qt项目文件中的不同子文件夹(/ config/.h;/thread / .h等)中包含,如:
HEADERS += $$PWD/src/*.h
HEADERS += $$PWD/src/config/*.h
Run Code Online (Sandbox Code Playgroud)
然后安装简单描述:
headers.files = $$HEADERS
headers.path = $$INSTALL_INC_DIR/proj
Run Code Online (Sandbox Code Playgroud)
使用此lib的其他一些项目将包含来自该安装目录的文件,并且会出现问题 - 所有.h文件都复制到同一文件夹,没有子文件夹,并且在代码中它们包含在子文件夹(#include <proj/config/config.h>)中.
有可能告诉qmake(或实际上是nmake)复制文件时保留原始文件夹结构吗?
有一种方法可以像这样创建 JPA 查询
String queryString = "SELECT i FROM Item i";
if (null != search) {
queryString += " WHERE i.name LIKE :pattern";
}
TypedQuery<Item> query = entityManager.createQuery(queryString, Item.class);
if (null != search) {
query.setParameter("pattern", "%" + search + "%");
}
Run Code Online (Sandbox Code Playgroud)
并且有 2 个检查,如果查询需要有可选的搜索字段,(if null != search)
避免重复的最常见方法是什么?使用单个参数可能有 2 个命名查询,或者 Criteria API 可能允许避免这种情况(因为没有查询字符串),但是还有其他方法吗?
在 Stripe 客户门户设置中,我设置了“允许客户应用促销代码”,但是当我打开客户门户时,我找不到可以添加促销代码的任何地方。我可以取消订阅、更新付款方式或在设置中配置的客户数据,但不能取消促销代码。有什么特别的事情需要做吗?在生产中,我们通过特殊的 BillingPortalSession(stripe api)打开它,但我也检查了 stripe 自身生成的链接。
计费门户配置功能如下所示:
"features": {
"customer_update": {
"allowed_updates": [
"email",
"address",
"phone"
],
"enabled": true
},
"invoice_history": {
"enabled": true
},
"payment_method_update": {
"enabled": true
},
"subscription_cancel": {
"cancellation_reason": {
"enabled": true,
"options": [
"too_expensive",
"missing_features",
"switched_service",
"unused",
"other",
"customer_service",
"too_complex"
]
},
"enabled": true,
"mode": "at_period_end",
"proration_behavior": "none"
},
"subscription_pause": {
"enabled": false
},
"subscription_update": {
"default_allowed_updates": [
"price",
"promotion_code"
],
"enabled": true,
"proration_behavior": "create_prorations"
}
Run Code Online (Sandbox Code Playgroud) hibernate ×2
java ×2
jpa ×2
qt ×2
android ×1
caching ×1
jdbctemplate ×1
locale ×1
nmake ×1
one-to-one ×1
oracle ×1
postgresql ×1
qmake ×1
qwidget ×1
sql ×1
windows-10 ×1
xamarin ×1