小编Boz*_*zho的帖子

Hibernate/JPA:将实体映射到不同的数据库

我有一个管理3个数据库的应用程序.我在seam框架上使用了带JPA的hibernate.

所以我有一个persitence.xml文件,有三个像这样的persitence-unit(我删除了db2和db3的属性):

<persistence-unit name="db1" transaction-type="JTA" >
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>db1source</jta-data-source>
    <properties>
        <property name="hibernate.dialect"
            value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="hibernate.connection.driver_class"
            value="oracle.jdbc.driver.OracleDriver" />
        <property name="hibernate.hbm2ddl.auto" value="validate" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.default_schema" value="SI_TEC" />
        <property name="hibernate.validator.apply_to_ddl" value="false" />
        <property name="hibernate.transaction.manager_lookup_class"
            value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />
    </properties>
</persistence-unit>

<persistence-unit name="db2" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>d2source</jta-data-source>
</persistence-unit>

<persistence-unit name="db3" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>d3source</jta-data-source>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)

在我的seam components.xml文件中,我使用我的hibernate配置创建了3个managed-persistence-context来映射seam.

最后,我有几个实体,我的问题就在这里.我需要在db2和db3中的其他实体中保留一些实体.所以数据库模式是不同的,当我部署我的应用程序时,我收到此错误:

org.hibernate.HibernateException: Missing table: PORTAILPERMISSION
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1113)
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    Truncated. see log file for complete stacktrace
Run Code Online (Sandbox Code Playgroud)

因为,db2中不存在表PORTAILPERMISSION. …

java database hibernate seam jpa

6
推荐指数
1
解决办法
4396
查看次数

如何在Windows上使用git推送到github?

简单地说,我不能:

  • HTTPS推送

    • Eclipse git插件不支持它(这里)
    • msygit UI消耗所有现有内存并挂起
    • turtoisegit消耗所有现有内存并挂起
  • SSH推送

    • 生成密钥对,但事实证明github不支持putty,只支持ssh
    • 我不想安装cygwin

git github

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

Java同步问题

我是Java Threads和同步的新手.

让我们说:

public class MyClass(){

    public synchronized void method1(){ 
        //call method2();
    } 

    public synchronized void method2(){};

}
Run Code Online (Sandbox Code Playgroud)
  1. 当我同步一个method1()实例对象时它意味着什么?因此,当一个线程在尝试访问时获取锁定时synchronized method1(),是否会阻止其他线程synchronized method2()从同一个对象访问另一个线程?

  2. 让我们说一个线程在访问method1()时获取一个锁,但是让我们说这也是method1()一个调用.这有可能吗?我的意思是有任何规则可以阻止呼叫吗?method2()synchronizedmethod1()method2()

提前致谢.

java multithreading synchronization

6
推荐指数
2
解决办法
486
查看次数

在实体Bean中使用无状态EJB bean

显然在实体bean中使用无状态EJB bean会有异味,但请考虑如下方案并告诉我您是否知道更好的解决方案:

  1. 我有一个InvoiceTemplate带有字段的实体BeanNextInvoiceDate
  2. 生成NextInvoiceDate是一个复杂的过程,应该在InvoiceTemplate课外进行
  3. NextInvoiceDate应该每次都更新InvoiceTemplate存储到db

现在我有关于实体bean NextInvoiceDate中的@PrePersist @PreUpdatemethon 生成的逻辑InvoiceTemplate.逻辑变得越来越复杂,我想将它移到InvoiceTemplate实体bean之外.它在我看来应该有一个服务来计算NextInvoiceDate.但那么从内部调用这项服务是否正确InvoiceTemplate?

java jpa ejb-3.0

6
推荐指数
1
解决办法
1225
查看次数

Flex Multipart上传进度

我正在使用multipart将文件上传到服务器URLLoader.我可以上传文件.我试图在URLLoader上侦听progress事件,但它只在上传的最后触发.如何通过上传更加一致地获得进度事件?

apache-flex file-upload urlloader

6
推荐指数
1
解决办法
954
查看次数

为什么setDisallowedFields为id? - Spring petclinic的例子

从Spring API,我明白@InitBinder用于初始化一些绑定规则..

在petclinic的例子中为什么我们有setdisallowed("id")?当id没有显示在表单上时?

@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
    dataBinder.setDisallowedFields("id");
}
Run Code Online (Sandbox Code Playgroud)

id字段没有显示在网页上,那么为什么我们使用上面的代码呢?

我们可以有这样的事情:

@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
    dataBinder.setDisallowedFields("FirstName");
}
Run Code Online (Sandbox Code Playgroud)

根据上面的代码,虽然用户在表单上输入,但不会设置所有者对象的名字字段?那是对的吗?

链接源

spring spring-mvc

6
推荐指数
1
解决办法
2491
查看次数

FacesContext.getCurrentInstance().getExternalContext().redirect不会立即重定向

An Id作为Url参数传入.我试着确保它id是一个数字.如果没有重定向到主页面

if(facilityId != null){
    try{
        Long.parseLong(facilityId);
    }catch(NumberFormatException e){
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("DisplayList.jsf");                    
        } catch (IOException ex) {}
    }
    facility = documentSBean.findFacilityById(Long.parseLong(facilityId));
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我传入这样的id

www....?facilityId=3?sdfasfda
Run Code Online (Sandbox Code Playgroud)

我发现这3?sdfasfda不是一个数字,并且转到redirect语句,但它没有正确地重定向,它执行下一对试图转换3?sdfasfda为Long的行,因此产生NumberFormatException.那么有没有办法立即强制重定向,或者是否有其他方法来解决这个问题.希望有一个else后catch:D:D.上面的代码在我的@PostConstruct init()方法中

jsf redirect

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

VisualVM通过防火墙 - RMI故障排除

很抱歉这个问题必须经过多次询问,但我无法成功解决问题.我已经阅读了很多博客,网站,论坛......并且在我的案例中找不到任何解决方案.

案例: 我需要将我的盒子上的VisualVM连接到远程服务器(tomcats,weblogics)以进行性能/线程/内存监控.这些服务器安装在受防火墙保护的(物理或虚拟)计算机上.防火墙中可以使用大间隔的端口,但可以使用,但不是所有端口.

测试

  • 我尝试在VisualVM中通过JMX直接连接,在服务器启动时使用服务器端的以下JVM选项:
    -Djava.rmi.server.hostname=[hostname]
    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=[port]
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false
    

我已经预先设置了主机名,因为从我的网络中,主机名和服务器的IP地址与远程服务器网络中的主机名和IP地址不同.

没有成功,VisualVM似乎总是在寻找未知的服务器.

  • 尝试在服务器端从可访问的端口(-p选项)启动jstatd从我的盒子(此端口上的telnet工作),但是当使用jstatd端口在此主机上启动visualVM时,它似乎仍在等待无法访问的东西...... .Jps连接到此远程主机的行为相同.

  • 尝试在网络保护较少的服务器上使用相同的工具,并且它可以工作.所以我看到了我的盒子和服务器之间的连接,它们是在不同于我指定的jstatd的端口上完成的.据我所知,第一次通信需要这个端口(握手类型),真正的通信是在其他端口上完成的,但不可预测(例如:60305,55197,...).我不确定我很清楚RMI是如何工作的.

拜托,帮助我,我疯了!

java jmx rmi visualvm

6
推荐指数
1
解决办法
7292
查看次数

什么是基于接口的框架?

我正在阅读Effective Java并阅读静态工厂方法来创建对象.其第2章,第1项.有优势没有.3,作者提到了喜欢

以这种方式隐藏实现类可以产生非常紧凑的API.此技术适用于基于接口的框架,其中接口为静态工厂方法提供自然返回类型.

我无法理解基于接口的框架是什么?

java oop frameworks interface

6
推荐指数
1
解决办法
4178
查看次数

使用spring-mvc将JSON的异常序列化

@RequestMapping(..)
@ResponseBody
public SearchResponse search(SearchRequest request) throws SearchException { .. }
Run Code Online (Sandbox Code Playgroud)

我想回到请求者:

  • 一切都很好的JSON序列化搜索响应
  • 如果SearchException抛出JSON序列化的异常详细信息.

第一部分工作正常(杰克逊在类路径上<mvc:annotation-driven />),但我没有看到一个简单的方法将异常序列化为json.

我可以注册一个自定义处理程序,并从那里写一个JSON字符串,但我可能还需要XML序列化,这意味着我将需要处理程序中的条件.那不是有什么准备好的吗?

spring spring-mvc

6
推荐指数
1
解决办法
3805
查看次数