我正在浏览hibernate文档,文档说hibernate需要一个no-arg构造函数用于所有持久化类:
无参数构造函数是所有持久化类的要求; Hibernate必须使用Java Reflection为您创建对象.构造函数可以是私有的,但是运行时代理生成和无需字节码检测的高效数据检索需要包或公共可见性.
但是当我通过创建一个没有任何no-arg构造函数的POJO类并通过放置一个带参数的构造函数来创建一个用于测试的示例程序时,我希望Hibernate会抛出一个异常,但我很惊讶地看到我没有得到异常.
这是我的POJO:
public class Event {
private Long id;
private String title;
public Event(String title) {}
public Long getId() {
return id;
}
private void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的计划:
import org.hibernate.Session;
import java.util.*;
import org.hibernate.tutorial.domain.Event;
import org.hibernate.tutorial.util.HibernateUtil;
public class EventManager {
public static void main(String[] args) {
EventManager mgr = new EventManager();
mgr.createAndStoreEvent("My Event", new …Run Code Online (Sandbox Code Playgroud) 我使用的学习春春在行动第3版,我在不同的来到filter types中component scanning春.
这是可用的列表:
注释 - 过滤扫描类,查找在类型级别使用给定注释进行注释的扫描类.要扫描的注释在表达式属性中指定.
assignable - 过滤扫描类,查找可分配给expression属性中指定类型的类.
aspectj - 过滤扫描类,查找与expression属性中指定的AspectJ类型表达式匹配的扫描类.
custom - 使用org.springframework.core.type.TypeFilter的自定义实现,如expression属性中指定的那样.
regex - 过滤扫描类,查找其类名与expression属性中指定的正则表达式匹配的类.
根据书中给出的示例,我对过滤器类型的使用有了一些想法,可用于可分配和注释.
但对于剩余的过滤器类型,我无法理解这些类型的使用方式以及何时需要使用其中一种类型.能帮助我理解这里的概念吗?
我正在尝试@Subselect使用Hibernate documentaion的示例。
我已经为Bid和Item创建了实体,如下所示:
@Entity
public class Bid {
@Id
private int id;
@Column(name="item_id")
private int itemId;
@Column
private int amount;
//getters & setters
}
@Entity
public class Item {
@Id
private int id;
@Column
private String name;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我已经在Bid和Item的数据库表中插入了一些记录。现在,我创建了另一个实体以将@Subselect测试为:
@Entity
@Subselect("select item.name name, max(bid.amount) amount, count(*) count " + "from item "
+ "join bid on bid.item_id = item.id " + "group by item.name")
@Synchronize({ "item", "bid" })
// tables impacted
public class …Run Code Online (Sandbox Code Playgroud) 嗨,我得到一些映射异常请遵循以下错误
org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.cmr.daos.child.domain.Child.medications[com.cmr.daos.child.domain.Medications]
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1185)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:710)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:645)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:65)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1716)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1423)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:720)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
... 62 more
Run Code Online (Sandbox Code Playgroud)
我的域名类:
public class Child extends AuditProperties implements java.io.Serializable {
@Expose private Long childId;
@Expose private String firstName;
@Expose private String lastName;
private Set<Allergies> allergies = new HashSet<Allergies>();
private Set<Medications> medications = new HashSet<Medications>();
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "child")
@JsonManagedReference …Run Code Online (Sandbox Code Playgroud) 我是unix的新手并试图理解下面的awk命令:
AWK=/bin/awk
RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'`
echo $RUID
Run Code Online (Sandbox Code Playgroud)
该命令正在打印登录的用户名,但是如何使用此命令提取用户名.
当我试图理解 Hibernate Save 和 persist 之间的时候,我遇到了这个解释:
persist() 定义明确。它使瞬态实例持久化。但是,它不保证标识符值会立即分配给持久化实例,分配可能发生在刷新时间。规范没有这么说,这就是我在使用 persist() 时遇到的问题。
persist() 还保证如果在事务边界之外调用它,它不会执行 INSERT 语句。这在具有扩展会话/持久性上下文的长时间运行的对话中很有用。
需要像persist()这样的方法。
save() 不保证相同,它返回一个标识符,并且如果必须执行 INSERT 来获取标识符(例如“身份”生成器,而不是“序列”),无论您是否在里面,这个 INSERT 都会立即发生或在交易之外。这在具有扩展会话/持久性上下文的长时间运行的对话中并不好。
你能帮我理解坚持的线条说:
persist() 还保证如果在事务边界之外调用它,它不会执行 INSERT 语句。这在具有扩展会话/持久性上下文的长时间运行的对话中很有用。
这里的交易边界是什么?什么是长时间的对话?扩展会话/持久上下文是什么意思?
也用于保存方法:
无论您是在事务内部还是外部,此 INSERT 都会立即发生。这在具有扩展会话/持久性上下文的长时间运行的对话中并不好。
我知道如果我们在我的程序中使用 save 方法来保存对象,我们不需要像 session.beginTransaction() 和 session.getTransaction().commt() 这样的语句。如果声明在这里说同样的话,请告诉我。那么这在长时间运行的对话中有什么用呢?
我是 hibernate 的新手,很难理解这些差异,你能帮我理解这些差异吗?
我正在学习 JMS 并遇到了这个声明:http : //docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/advanced.html#1023387
PERSISTENT 传递模式是默认设置,它指示 JMS 提供者格外小心,以确保在 JMS 提供者发生故障时消息不会在传输过程中丢失。使用此传递模式发送的消息在发送时会记录到稳定存储中。
如果发生 JMS Provider 故障,那么 JMS Provider 如何确保消息不丢失?
这是什么意思:
“使用这种传递模式发送的消息在发送时会记录到稳定存储中。”
请帮助我在这里理解 JMS 概念。
我试图理解一个简单的脚本,它使用unix中的sqlplus命令连接到Oracle数据库:
1 sqlplus -s /nolog > /dev/null 2>&1 <<EOF
2 whenever sqlerror exit failure
3 connect $user_pwd
4 exit success
5 EOF
Run Code Online (Sandbox Code Playgroud)
如果我正在使用unix,那么我使用命令sqlplus $user_pwd连接到oracle数据库并且sqlplus使用命令exit.请帮助我理解1,2,4,5行.对于专家来说这可能是一个简单的问题,但我无法理解何时使用这些问题.
我最近开始使用Ubuntu,尝试安装一些软件包,并偶然发现了该软件包libaio,这个软件包的目的是什么,以及何时需要在Ubuntu上安装它?