我得到一个例外
object引用未保存的瞬态实例 - 在刷新之前保存瞬态实例
抛出以下代码:
public void addThing(String key, String someData) {
Thing thing = new Thing();
booking.setData(someData);
booking.setParent(this);
bookings.put(key, thing);
}
Run Code Online (Sandbox Code Playgroud)
Parent映射是:
@ElementCollection(fetch=FetchType.EAGER)
@Column(name="thing", nullable=false)
@MapKeyColumn(name="key")
@JoinColumn(name="parent_id")
protected Map<String, Thing> things = Maps.newHashMap();
Run Code Online (Sandbox Code Playgroud)
孩子('Thing')映射是:
@ManyToOne
private Parent parent;
Run Code Online (Sandbox Code Playgroud)
根据Hibernate手册:
a上没有级联选项
ElementCollection
,目标对象始终与父级一起保持,合并,删除.
但是 - 在我更改为新@ElementCollection
映射之前解决了一个问题,即我为查询返回了明显的幻像元素,这段代码工作正常.
我知道我可以单独保存元素然后做一个引用,但我更喜欢自动完成它,我认为这是它应该工作的方式.有任何想法吗?
我(不幸的是)有一个MATLAB项目,包含两个文件,main.m和function.m.我花了我的时间编辑function.m,这是从main.m多次调用的.当我按下键盘上的F5时,它会运行当前文件(function.m),所以我需要不断更改回main.m来运行项目,这很烦人.我习惯了将会运行最后一次启动的eclipse.
有没有办法在MATLAB中实现这种行为?
如果有任何潜在的雇主正在阅读此内容,请注意我被迫使用此程序(根据我的意愿向客户收取访问线程安全原语的费用).
有没有办法在不启动引擎的情况下获得MATLAB的版本?启动时(在非GUI模式下)它将版本打印到stout - 但我从Java远程使用它,因此输出不可用.
作为替代方案,有没有办法从MATLAB中获取版本?
"版本"是指优选双串数,例如"7.13"而不是版本号,例如"R2011b".
谢谢!詹姆士
我有以下代码:
long fp = ...
void (*ptr)(long, char*, char*) = fp;
Run Code Online (Sandbox Code Playgroud)
long fp
是一个正确的函数指针,它以长整数形式出现.我正在获得标准"从没有强制转换的int生成指针"警告.我希望能够编译:
-std=iso9899:1990 -pedantic-errors
Run Code Online (Sandbox Code Playgroud)
这会将警告变成错误.问题是:什么是正确的演员?我尝试了各种猜测,例如:
void (*ptr)(long, char*, char*) = (void)(*)(long, char*, char*) fp;
Run Code Online (Sandbox Code Playgroud)
但似乎无法找到合适的人选.
我有一个奇怪的问题,Hibernate运行的查询比我要求的多,并且看不到需要.
这是我的控制器:
@Autowired UserService users;
@RequestMapping("/test")
@ResponseBody
public String test() {
User user = users.findUser(1L);
return "Found user: "+user.getEmail();
}
Run Code Online (Sandbox Code Playgroud)
这是UserService:
@Component
public class UserService {
@javax.persistence.PersistenceUnit private EntityManagerFactory emf;
private JpaTemplate getJpaTemplate() {
return new JpaTemplate(emf);
}
public User findUser(long id) {
long start = System.currentTimeMillis();
JpaTemplate jpaTemplate = getJpaTemplate();
User user = jpaTemplate.find(User.class, id);
System.out.println(System.currentTimeMillis() - start);
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
对findUser()的调用大约需要140ms ......相当令人费解.数据库对其他查询执行得很好,包括一些处理程序中的这个(我怀疑它不是第一个查询运行时).
JProfiler建议每次调用它时,会向数据库发送四个查询(不一定按此顺序):
1) [5ms] select user... (the actual query) 2) [7ms] SHOW COLLATION 3) …
这是我的客户:
class Client {
@Inject(optional=true) Service service;
}
Run Code Online (Sandbox Code Playgroud)
有时不需要Service,并且我们在JVM启动时(即在绑定器运行之前)知道该信息.如何使绑定可选?如果我根本没有指定绑定,它会尝试新建服务(并且因为没有零参数构造函数而失败:" 在package.Client.service(Service.java:40)注入时出错:找不到package.Service中的合适构造函数. "),我不能这样做:
binder.bind(Service.class).toInstance(null);
Run Code Online (Sandbox Code Playgroud)
因为Guice似乎不允许空值.有任何想法吗?
我正在编写一个程序来与USB硬件接口板通信,这需要一个小型JNI库.我在编译机器上运行10.5.8,并且可以使用以下命令成功编译JNI的共享库:
# Build shared library for K8055
g++ -x objective-c -fmessage-length=0 -pipe -Wno-trigraphs \
-fpascal-strings -fasm-blocks -O0 -mdynamic-no-pic -fvisibility=hidden -gdwarf-2 \
-Wmost -Wno-four-char-constants -Wno-unknown-pragmas \
-c ./K8055/K8055.m \
-o ./K8055/K8055.o \
-arch x86_64 \
-arch i386
echo "Building JNI shared library..."
gcc -c -m64 -I/System/Library/Frameworks/JavaVM.framework/Headers \
k8055usbio.m -o k8055usbio.so -arch x86_64
echo "Compiling dynamic library with both..."
g++ -m64 -dynamiclib -o ./lib/libk8055usbio.dylib \
k8055usbio.so ./K8055/K8055.o\
-framework Foundation -framework IOKit
Run Code Online (Sandbox Code Playgroud)
我真的不明白我在这里做什么; 我已经设法从很多谷歌搜索中拼凑出来.我的问题是:我如何修改它来编译运行10.3.9的PPC G3机器?Java部分我很满意.这是我到目前为止所尝试的:
# Build shared library for K8055 (PPC)
echo …
Run Code Online (Sandbox Code Playgroud)