JPA:外键也是主键映射

我一整天都试图解决这个问题,但没有运气! 此外,我试图阅读网络上的大多数教程,但众所周知,他们都充满了无用的例子,不能反映你在现实世界中的需求。 所以这是我的情况: 数据库: 表: 车辆 (vehicleId,品牌,型号,devYear,regNumber)< – vehicleId是PrimaryKey table: extras (vehicleId,allowSmoke,allowFood,allowDrinks,airConditioner)< – vehicleId是PK和FK。 关键是,如果我有一个类Vehicle和一个映射到数据库的类TravelExtras ,我希望Vehicle类具有一个属性TravelExtras travelExtras和get和set方法。 不幸的是,无论我尝试在数据库中持久保存对象时我都会遇到各种错误。 这是一个例子: EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( “NaStopPU” ); EntityManager entitymanager = emfactory.createEntityManager( ); entitymanager.getTransaction( ).begin( ); TravelExtra travelExtra = new TravelExtra(); entitymanager.persist(travelExtra); Vehicle vehicle = new Vehicle(2L, “10152487958556242”, “Mazda”, “626”, “334343”, 2005, 4); vehicle.setTravelExtra(travelExtra); entitymanager.persist(vehicle); entitymanager.getTransaction().commit(); entitymanager.close( ); […]

检查ClientSocket是否在java中断开连接

这是一个跟进: 这个问题 基本上,我有一个服务器循环来管理与一个单独客户端的连接。 在循环中的某一点,如果ClientSocket存在,它会尝试读取以检查客户端是否仍然连接: if (bufferedReader.read()==-1 ) { logger.info(“CONNECTION TERMINATED!”); clientSocket.close(); setUpSocket(); //sets up the server to reconnect to the client }else{ sendHeartBeat(); //Send a heartbeat to the client } 问题是,一旦创建了套接字,应用程序将挂起读取,我假设等待永远不会发生的数据,因为客户端永远不会发送到服务器。 在此之前没问题,因为这个正确处理断开连接(当客户端断开连接时读取最终会失败)并且循环将尝试重新建立连接。 但是,我现在已经添加了上面的sendHeartBeat()方法,它定期让客户端知道服务器仍在运行。 如果读取持有线程,则心跳不会发生! 所以,我假设我正在测试连接是否仍然不正确。 我可以,作为一个快速的黑客,在一个单独的线程中运行bufferedReader.read(),但随后我会遇到各种各样的并发问题,我真的不想处理。 所以问题有几个:1)我是否正确检查客户端断开连接? 2)如果没有,我该怎么办? 3)如果我正确地做了我怎么做,我得到的读取不能让流程成为人质? 或者是穿线唯一的方式?

如何从java执行批处理文件?

我想从java程序执行批处理文件。 我使用以下命令。 Runtime.getRuntime().exec(“server.bat”); 但问题是我想给出一个reative路径而不是绝对路径,以便我可以在任何comp上部署该java项目。 该项目的目录结构如下: com | project | —— parser | |_____ Main.java | ——-util |_____ Server.bat 我想从“parser”目录中的“Main.java”文件中运行“util”目录中的“Server.bat”文件。

如何确保只运行Java应用程序的单个实例?

我希望我的应用程序检查其自身的另一个版本是否已经运行。 例如, demo.jar启动,用户点击再次运行它,但第二个实例意识到“哦等等,已经有一个demo.jar正在运行”。 然后退出并留言。

转义序列无效\ d

我正在尝试检查密码是否包含至少一个小写字母,一个大写字母,一个数字和一个特殊字符。 我正在尝试这个: if(!password.matches(“(?=.*\d)(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=])”)){ username = “Error”; } 但是给我一个错误说:无效的转义序列。 有人可以帮我解决问题并确认这是正确的模式吗? 谢谢,惠特\\ d不做错误,但它与像保罗%88这样的字符串不匹配为什么?

PrintStream对象out由null初始化,我们如何调用它的方法?

我在System类中看到out对象(类型为PrintStream )初始化为null值。 我们如何调用System.out.prinln(“”); ? 在System类中,out变量像这样初始化: package java.lang; public final class System { public final static PrintStream out = nullPrintStream(); private static PrintStream nullPrintStream() throws NullPointerException { if (currentTimeMillis() > 0) { return null; } throw new NullPointerException(); } } 如上所示,代码out变量由null初始化,这个变量是final,所以它不能进一步初始化,那么我们如何使用“out”变量。

在Java中生成一个在JVM关闭后幸存的进程

我需要在Java(仅在Linux下)生成一个进程,该进程将在JVM退出后继续运行。 我怎样才能做到这一点? 基本上,Java应用程序应该生成一个更新程序,它会停止Java应用程序,更新文件然后再次启动它。 我对hack&slash方法感兴趣,只是为了让它工作以及更好的设计方案,如果你有一个:)

使用Runtime.exec()生成的进程的高效执行和输出流重定向

我有一个脚本,它执行多次程序,为STDERR和STDOUT产生大约350行输出。 现在,我需要在Java中执行脚本,从而将输出流打印到其原始目标。 所以,基本上,我从Java类中执行脚本,维护用户的原始行为。 我这样做的方式受到了诸如从java Runtime.exec读取流的建议的启发,并且在function上,工作正常。 Process p = Runtime.getRuntime().exec(cmdarray); new Thread(new ProcessInputStreamHandler(p.getInputStream(), System.out)).start(); new Thread(new ProcessInputStreamHandler(p.getErrorStream(), System.err)).start(); return p.waitFor(); 而ProcessInputStreamHandler类: class ProcessInputStreamHandler implements Runnable { private BufferedReader in_reader; private PrintStream out_stream; public ProcessInputStreamHandler(final InputStream in_stream, final PrintStream out_stream) { this.in_reader = new BufferedReader(new InputStreamReader(in_stream)); this.out_stream = out_stream; } @Override public void run() { String line; […]

JTA EntityManager无法使用getTransaction()

如何在我的非ejb应用程序中使用以下代码。 代码有效。 @Override public void saveItems(Collection items) { synchronized (em) { EntityTransaction tx = em.getTransaction(); try { tx.begin(); for (T item : items) { saveItem_((Class) null, item); } tx.commit(); } finally { if (tx.isActive()) { tx.rollback(); } } } } 在一个新的应用程序中,我正在使用EJB3 + JSF,并希望重用包含上述代码的库。 我对新应用程序的持久性单元如下所示: org.hibernate.ejb.HibernatePersistence MySQLConnection 我的新应用程序在遇到此行时抛出exception: EntityTransaction tx = em.getTransaction(); 例外是: A JTA EntityManager […]

在Spring配置文件中访问maven项目版本

我想在页面中显示我当前运行的Web应用程序版本。 该项目基于Maven,Spring和Wicket。 我想以某种方式获得maven的${project.version}的价值并在我的spring XML文件中使用它,类似于我使用Spring PropertyPlaceholderConfigurer读取属性文件以获取我在我的应用程序中使用的设置的方式。 如果我在我的Spring配置中将maven project.version作为变量提供,我可以这样做: ${project.version} 我怎样才能做到这一点?