我在下面使用HIbernate和Spring和JPA。当引发PersistenceException时,我想捕获它并返回错误消息,以便它不会传播到调用者。
@Transactional
public String save(Object bean) {
String error = null;
try {
EntityManager entityManager = getEntityManager();
for (int i = 0, n = entities.size(); i < n; i ++) {
entityManager.merge(entities.get(i));
}
}
catch (PersistenceException e) {
error = e.getMessage();
}
return error;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到一个异常,说javax.persistence.RollbackException: Transaction marked as rollbackOnly.我需要在异常之后回滚事务,但是当我捕获到异常并且不想重新抛出该异常时,如何回滚它呢?
我正在使用Twitter API库将状态发布到Twitter.Twitter要求帖子采用UTF-8编码.该库包含一个URL编码标准字符串的函数,该函数适用于所有特殊字符,例如!@#$%^&*(),但是对重音字符(和其他UTF-8)的编码不正确.
例如,'é'转换为'%E9'而不是'%C3%A9'(它几乎只转换为十六进制值).是否有内置函数可以输入类似'é'的内容并返回类似'%C9%A9'的内容?
编辑:我是UTF-8的新手,以防我要求的内容毫无意义.
编辑:如果我有
string foo = "bar é";
Run Code Online (Sandbox Code Playgroud)
我想把它转换成
"bar %C3%A9"
Run Code Online (Sandbox Code Playgroud)
谢谢
在此先感谢您的努力.
我有一个围绕ListActivity扩展类的应用程序.在应用程序启动之前,我想检查用户是否已注册,如果没有告诉他并从他那里获得一些信息.所以,我试图在OnCreate()方法中调用StartActivity.当它加载时,我得到了一个大黑屏.我认为它可能与在OnCreate中运行有关,所以我让Activity像往常一样启动,我试图在OnClick事件中运行它,我得到了相同的结果.在这两种情况下,如果我按下escape,那个Window就会消失,主应用程序窗口会回来.
以下是我称之为新活动的行
Intent emailIntent = new Intent(this, EmailAddressGetter.class);
this.startActivity(emailIntent);
Run Code Online (Sandbox Code Playgroud)
这是该类的代码
/**
*
*/
package com.kosherapp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
/**
* @author Josh
*
*/
public class EmailAddressGetter extends Activity {
public void OnCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.emailinput);
}
}
Run Code Online (Sandbox Code Playgroud)
这是emailinput xml内容
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ffffff"
android:textColor="#000000"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:text="hello"
>
</TextView>
Run Code Online (Sandbox Code Playgroud)
而且,这是明确的内容
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kosherapp"
android:versionCode="1"
android:versionName="1.0"
>
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.CALL_PHONE" />
<application …Run Code Online (Sandbox Code Playgroud) 今天我遇到了链接我编译的cuda东西的问题.
我有一个最新的debian测试w/2.6.32-3-amd64.
我整天在我的代码上工作.不时编译.没问题.但是经过一次小的代码更改后我得到了以下错误:
gcc -o pa CUDA.o histogram256.o histogram64.o main.o -lrt -lm -lcudart -I. -I/data/cuda/include -I/data/cuda/C/common/inc -L/data/cuda/lib64
/usr/bin/ld: main.o: undefined reference to symbol 'std::basic_ifstream<char, std::char_traits<char> >::close()@@GLIBCXX_3.4'
/usr/bin/ld: note: 'std::basic_ifstream<char, std::char_traits<char> >::close()@@GLIBCXX_3.4' is defined in DSO /usr/lib64/libstdc++.so.6 so try adding it to the linker command line
/usr/lib64/libstdc++.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我改回了代码,但错误仍然存在.
lib就是应该存在的地方.(/ usr/lib64链接到/ usr/lib)
ldd /usr/lib/libstdc++.so.6
linux-vdso.so.1 => (0x00007fff31fff000)
libm.so.6 => /lib/libm.so.6 (0x00007f15f625a000)
libc.so.6 => /lib/libc.so.6 (0x00007f15f5ef9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f15f680d000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 …Run Code Online (Sandbox Code Playgroud) 我有一个调用多线程例程的Fortran 90程序。我想从调用例程中计时该程序。如果使用cpu_time(),最终将所有线程(本例中为8)的cpu_time加在一起,而不是程序运行的实际时间。该etime()例程似乎也是如此。关于如何计时该程序(不使用秒表)的任何想法?
我正在将一些代码从Nhibernate 2.x转换为3.0.之前,我正在使用LINQ插件,以获得LINQ支持.我的理解是在3.0中它作为一流的功能进入了.所以我的问题是,我曾经有这个:
return new List<T>(session.Linq<T>().Where(where));
Run Code Online (Sandbox Code Playgroud)
新语法看起来如何?我浏览了nhib 3文档和教程,并没有看到任何关于linq的东西,所以我找不到一个例子来模式.
情况就是这样:我有两个表,其中一个引用另一个表(例如,table2引用table1).在创建这些表时,我确实将外键约束设置为DEFERRABLE,将ON UPDATE和ON DELETE子句设置为NO ACTION(这是默认值).
但是,当运行下面的事务时,我收到以下错误.
交易:
START TRANSACTION;
SET CONSTRAINTS ALL DEFERRED;
UPDATE table1 SET blah blah;
UPDATE table2 SET blah blah;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
错误:
ERROR: update or delete on table "table1" violates foreign key constraint "table1_column_fkey" on table "table2"
DETAIL: Key (column1)=(blahblah) is still referenced from table "table2".
Run Code Online (Sandbox Code Playgroud)
和桌子结构:
CREATE TABLE table1(
column1 CHAR(10),
[...]
PRIMARY KEY (column1)
);
CREATE TABLE table2(
primkey CHAR(9),
[...]
column2 CHAR(10) NOT NULL,
PRIMARY KEY(primkey),
FOREIGN KEY(column2) REFERENCES table1(column1) DEFERRABLE
);
Run Code Online (Sandbox Code Playgroud)
我想要做的是在事务进行时推迟外键检查,直到它提交为止.我只是看不出为什么这个错误会返回,我怎么能让事务工作.
机场有四个字母的ICAO代码.按照惯例,它们总是大写的.我正在创建一个用于接收用户输入的表单,但是此表单需要能够以大小写混合的形式接受用户输入,并防止它们创建欺骗.
:uniqueness当然,默认情况下区分大小写.我想出了如何在保存之前将用户的输入转换为大写,但问题是这似乎是后验证,而不是预验证.
例如,如果已经有ICAO的机场KLAX,用户可以输入klax,它将被验证为唯一,然后转换为大写并存储,从而产生重复.
这是我目前的型号代码.
class Airport < ActiveRecord::Base
validates :icao, :name, :lat, :lon, :presence => true
validates :icao, :uniqueness => true
before_save :uppercase_icao
def uppercase_icao
icao.upcase!
end
end
Run Code Online (Sandbox Code Playgroud) 是否可以混合 JPQL 和CriteriaQuery?
我有一个String包含 JPQL 中的 where 条件的一个,以及一个CriteriaQuery已经构建并从其他地方获取的。我想知道是否可以添加whereString条件CriteriaQuery.where()。where 条件可以是多个条件“and-ed”/“or-ed”在一起。
我可以在不解析 where 条件的情况下执行此操作吗String?
有没有一种简单的方法可以确保使用Configuration开关在我的应用程序的发布版本中不包含资源?
它从未在发布版本中使用,但考虑到它的本质,我宁愿甚至不包括它.包括常用于表示软件错误的图像似乎是商店拒绝诱饵.
澄清:我知道如何在应用程序中不使用该图像.我想要做的是在构建发布配置时确保图像在.app包中不均匀.我不希望App Store审阅者浏览该包并说"嘿!一个bug图标!我怎么能得到它?因为我无法弄明白,必须有一些秘密功能."
c++ ×2
java ×2
jpa ×2
activerecord ×1
android ×1
build ×1
cuda ×1
deferred ×1
foreign-keys ×1
fortran ×1
hibernate ×1
ios ×1
iphone ×1
libstdc++ ×1
linq ×1
nhibernate ×1
openmp ×1
postgresql ×1
spring ×1
string ×1
time ×1
transactions ×1
twitter ×1
utf-8 ×1
validation ×1