我试图用一个小例子来理解Hibernate中的一对多映射.我Product有一套Part's.这是我的实体类:
Part.java
@Entity
public class Part {
@Id
@GeneratedValue
int id;
String partName;
//Setters & Getters
}
Run Code Online (Sandbox Code Playgroud)
Product.java
@Entity
public class Product {
private String serialNumber;
private Set<Part> parts = new HashSet<Part>();
@Id
public String getSerialNumber() {
return serialNumber;
}
@OneToMany
@JoinColumn(name = "PRODUCT_ID")
public Set<Part> getParts() {
return parts;
}
// Setter methods
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试在我的数据库中保存一些部件和产品,并观察下面由hibernate生成的查询:
Hibernate: insert into Product (serialNumber) values (?)
Hibernate: insert into Part (partName, id) values (?, ?)
Hibernate: update Part set …Run Code Online (Sandbox Code Playgroud) 我在Unix环境下使用以下命令连接到Oracle数据库:
sqlplus test/test@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname.com )(PORT=1521)))(CONNECT_DATA=(SID=mysid))'
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误:
Use SQL*Plus to execute SQL, PL/SQL and SQL*Plus statements.
Usage 1: sqlplus -H | -V
-H Displays the SQL*Plus version and the
usage help.
-V Displays the SQL*Plus version.
Usage 2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ]
<option> is: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]
Run Code Online (Sandbox Code Playgroud)
请帮助我在使用命令时出错.
我是pl/sql的新手,所以这可能是一个愚蠢的问题,我创建了一个简单的PL/SQL程序:
DECLARE
inputData VARCHAR2(1024);
BEGIN
inputData :='&&inputData' ;
Dbms_Output.put_line('Value entered is:' || inputData);
END;
/
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,我得到低于输出:
Enter value for inputdata: check
old 4: inputData :='&&inputData' ;
new 4: inputData :='check' ;
Value entered is:check
PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)
如何在显示输出时删除旧值和新值的行.
我正在浏览hibernate文档并遇到了inverse属性的概念.我是Hibernate的新手,所以我很难理解这个概念.
<class name="Category">
<id name="id" column="CATEGORY_ID"/>
...
<bag name="items" table="CATEGORY_ITEM">
<key column="CATEGORY_ID"/>
<many-to-many class="Item" column="ITEM_ID"/>
</bag>
</class>
<class name="Item">
<id name="id" column="ITEM_ID"/>
...
<!-- inverse end -->
<bag name="categories" table="CATEGORY_ITEM" inverse="true">
<key column="ITEM_ID"/>
<many-to-many class="Category" column="CATEGORY_ID"/>
</bag>
</class>
Run Code Online (Sandbox Code Playgroud)
从上面的代码,它inverse="true"被应用于类别,所以我理解类别是反面的.
但我看到与我的理解有些矛盾:
仅对关联的反向末端所做的更改不会保留.
category.getItems().add(item); // The category now "knows" about the relationship
item.getCategories().add(category); // The item now "knows" about the relationship
session.persist(item); // The relationship won't be saved!
session.persist(category); // The relationship will be saved
Run Code Online (Sandbox Code Playgroud)
如果类别是反向结束,那么如何保存关系?
非反向侧用于将内存中表示保存到数据库.
在查看示例并阅读上述声明后,我发现类别处于非反向结束.
请帮助我知道如何解释这个 …
请帮助我理解JMS中的持久订阅,我正在浏览此链接并遇到声明:
http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/advanced.html#1024717
持久订阅者使用JMS提供程序保留的唯一标识注册持久订阅.具有相同身份的后续订户对象在先前订户留下的状态下恢复订阅.如果持久订阅没有活动订阅者,则JMS提供者会保留订阅的消息,直到订阅收到它们或它们到期为止.
订户和持久订户是同时存在的两个不同对象吗?还请帮帮我这些陈述是什么意思?
我们可以在Spring中使用Model或ModelAndView对象设置请求属性.
我们可以使用@SessionAttributes在会话范围内保留属性.
那么如何application在Spring 中将属性放在范围内,spring是否为此提供了任何注释?
我是使用Zookeeper并尝试使用Zookeeper书籍学习它的新手.现在以独立模式启动服务器,在书中给出了使用该命令的信息bin/zkServer.sh start.
我使用Windows所以我运行命令bin/zkServer.cmd start,现在我得到一个奇怪的错误:
D:\zoo\zookeeper-3.4.6>bin\zkServer.cmd start
D:\zoo\zookeeper-3.4.6>java "-Dzookeeper.log.dir=D:\zoo\zookeeper-3.4.6\bin\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\zoo\zookeeper-3.4.6\bin\..\build\classes;D:\zoo\zookeeper-3.4.6\bin\..\b
ild\lib\*;D:\zoo\zookeeper-3.4.6\bin\..\*;D:\zoo\zookeeper-3.4.6\bin\..\lib\*;D:\zoo\zookeeper-3.4.6\bin\..\conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:\zoo\zookeeper-3.4.6\bin\..\conf
zoo.cfg" start
2014-04-04 21:00:06,573 [myid:] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
2014-04-04 21:00:06,576 [myid:] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0
2014-04-04 21:00:06,576 [myid:] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled.
2014-04-04 21:00:06,577 [myid:] - WARN [main:QuorumPeerMain@113] - Either no config or no quorum defined in config, running in standalone mode
2014-04-04 21:00:06,626 [myid:] - …Run Code Online (Sandbox Code Playgroud) 我在我的Windows机器上使用Notepad ++,而我错误地打开了一个64MB的文件.现在我的Notepad ++被永久地卡住了,我无法使用它.
是否有任何配置文件,Notepad ++用于维护打开的文件列表?如果是,那么我可以打开该文件并删除我在其中打开的64MB文件的条目吗?
我正在浏览Hibernate Documentation LockModes.这些与Isolation levels我们用于数据库的相同吗?它们与众不同Isolation levels?
我正在尝试一个简单的例子,并观察到当我使用session.load()方法本身而不是在我在被加载对象上调用某些方法时命中数据库时,hibernate正在访问数据库.
session.beginTransaction(); //Line 1
DomesticCat d1 = (DomesticCat)session.load(DomesticCat.class, 1L,LockOptions.UPGRADE); //Line 2
d1.meow(); //Line 3
session.getTransaction().commit(); //Line 4
Run Code Online (Sandbox Code Playgroud)
我观察到hibernate在第2行本身就遇到了数据库,请告诉我为什么会这样?如果我删除了LockOptions参数,那么将打开数据库命中Line 3而不是Line 2
LockOptions的API很少提供它们的详细信息:
READ表示LockMode.READ(超时+范围不适用)
这是什么意思timeout + scope do not apply?
UPGRADE代表LockMode.UPGRADE(将永远等待锁和范围的假意义只有实体被锁定)
什么时候应该使用UPGRADE?这意味着scope of false meaning only entity is locked什么?
对于有经验的人来说可能是这些基本问题,请帮助我理解这里的概念.
感谢您查看我的帖子.
假设数组是A={1,2,3},现在获取该数组的所有子数组。对于每个子数组,找到该子数组中的最小值,并找到该子数组中的项目之和。最后添加所有这些值。输入无法排序,因为我想要所有可能的子数组。
例子:
可能的子数组是:
{1} - min = 1, sum = 1 => min* sum = 1
{1,2} - min = 1, sum = 3 => min* sum = 3
{1,2,3} - min = 1, sum = 6 => min* sum = 6
{2} - min = 2, sum = 2 => min* sum = 4
{2,3} - min = 2, sum = 5 => min* sum = 10
{3} - min = 3, sum = 3 => min* …Run Code Online (Sandbox Code Playgroud)