小编gub*_*bby的帖子

使用@ElementCollection Hibernate未保存的实例异常

我得到一个例外

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映射之前解决了一个问题,即我为查询返回了明显的幻像元素,这段代码工作正常.

我知道我可以单独保存元素然后做一个引用,但我更喜欢自动完成它,我认为这是它应该工作的方式.有任何想法吗?

java hibernate java-ee-6 jpa-2.0

7
推荐指数
1
解决办法
2070
查看次数

MATLAB:如何运行与正在编辑的文件不同的文件?

我(不幸的是)有一个MATLAB项目,包含两个文件,main.mfunction.m.我花了我的时间编辑function.m,这是从main.m多次调用的.当我按下键盘上的F5时,它会运行当前文件(function.m),所以我需要不断更改回main.m来运行项目,这很烦人.我习惯了将会运行最后一次启动的eclipse.

有没有办法在MATLAB中实现这种行为?

如果有任何潜在的雇主正在阅读此内容,请注意我被迫使用此程序(根据我的意愿向客户收取访问线程安全原语的费用).

matlab

5
推荐指数
2
解决办法
1224
查看次数

有没有办法在不启动引擎的情况下获得MATLAB版本?

有没有办法在不启动引擎的情况下获得MATLAB的版本?启动时(在非GUI模式下)它将版本打印到stout - 但我从Java远程使用它,因此输出不可用.

作为替代方案,有没有办法从MATLAB中获取版本?

"版本"是指优选双串数,例如"7.13"而不是版本号,例如"R2011b".

谢谢!詹姆士

linux matlab

4
推荐指数
1
解决办法
5449
查看次数

强制转换为函数指针?

我有以下代码:

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)

但似乎无法找到合适的人选.

c function-pointers c89

4
推荐指数
2
解决办法
1979
查看次数

Hibernate向数据库发送多余的查询

我有一个奇怪的问题,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) …

java mysql spring hibernate jprofiler

3
推荐指数
1
解决办法
1853
查看次数

如何在Guice中创建可选绑定?

这是我的客户:

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似乎不允许空值.有任何想法吗?

java dependency-injection guice

3
推荐指数
1
解决办法
1万
查看次数

使用MacOS 10.3.9对PPC G3进行交叉编译

我正在编写一个程序来与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)

java macos java-native-interface g++

2
推荐指数
1
解决办法
350
查看次数