我很好奇,需要快速找到这个答案.谷歌不会帮助太多.
Java Persistence API具有这些属性,告诉框架在关联实体上级联操作:
CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH
Run Code Online (Sandbox Code Playgroud)
我知道前两个意思是什么:当我持有具有B的对象A时,也坚持B,当我删除A时,也删除B.
但我无法理解其他两个人所取得的成就.救命?
我有以下疑问:
我在这里看到了几个关于处理和保持类似枚举值的最佳方法的问题/讨论(例如,坚持适用于枚举的数据,如何使用NHibernate保持枚举),我想问一般的共识是什么.
特别是:
注意:我将原本包含在此问题中的解释移到了答案中.
对于我们的新产品重新设计,我们正在从Java中选择最佳框架.考虑到模型的数据库不可知方法,我们正在研究Struts + Spring与iBATIS或Hibernate之间的选择.请提供最好的建议,因为两者都提供持久性.
我怀疑名称属性是否存在于两者中
@Entity和@Table
例如,我可以为name属性设置相同的值
@Entity(name = "someThing")
@Table(name = "someThing")
Run Code Online (Sandbox Code Playgroud)
同一个班级我也可以有不同的名字
@Entity(name = "someThing")
@Table(name = "otherThing")
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我这两者之间有什么区别以及为什么我们两者都有相同的属性?
我刚刚开始将我自己开发的持久性框架迁移到JPA.
鉴于持久性框架隐藏了大量的管道,我有兴趣知道是否关闭EntityManagers会造成资源泄漏,或者框架是否会收集并关闭它们.
我打算在所有地方关闭它们,但我必须这样做吗?
目前使用TopLink,只是因为它可以轻松地与NetBeans协同工作,但我很乐意调查其他JPA提供商.
背景
我正在尝试使用NSCoding协议对String样式的枚举进行编码,但是我遇到了从String转换回来的错误.
解码和编码时出现以下错误:
字符串不可转换为Stage
额外参数ForKey:在电话中
码
enum Stage : String
{
case DisplayAll = "Display All"
case HideQuarter = "Hide Quarter"
case HideHalf = "Hide Half"
case HideTwoThirds = "Hide Two Thirds"
case HideAll = "Hide All"
}
class AppState : NSCoding, NSObject
{
var idx = 0
var stage = Stage.DisplayAll
override init() {}
required init(coder aDecoder: NSCoder) {
self.idx = aDecoder.decodeIntegerForKey( "idx" )
self.stage = aDecoder.decodeObjectForKey( "stage" ) as String // ERROR
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeInteger( …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,有一些特定于应用程序的设置,下次我的应用程序启动时应该可以使用.
换句话说,我希望数据在应用程序周期的会话中可用.
这可以在不使用数据库(sqlite)的情况下实现.
我正在使用JPA 2.出于安全原因,我正在使用CriteriaQuery进行类型安全(因此,我不会搜索任何类型查询的解决方案等).
我最近遇到了一个需要设置SQL-LIMIT的问题.
经过大量的搜索,我仍然没有成功找到解决方案.
CriteriaQuery<Product> query = getEntityManager().getCriteriaBuilder().createQuery(Product.class);
Root<Product> product = query.from(Product.class);
query.select(product);
return em.createQuery(query).getResultList();
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
在我的SQL Server 2000数据库中,我有一个DATETIME名为lastTouchedset 的类型的时间戳(在函数中不在数据类型中)列getdate()作为其默认值/ binding.
我正在使用Netbeans 6.5生成的JPA实体类,并在我的代码中使用它
@Basic(optional = false)
@Column(name = "LastTouched")
@Temporal(TemporalType.TIMESTAMP)
private Date lastTouched;
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将对象放入数据库时,我得到了,
javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.generic.Stuff.lastTouched
Run Code Online (Sandbox Code Playgroud)
我已经尝试设置设置@Basic为(optional = true),但是抛出一个异常,说数据库不允许列的null值TIMESTAMP,它不是设计的.
ERROR JDBCExceptionReporter - Cannot insert the value NULL into column 'LastTouched', table 'DatabaseName.dbo.Stuff'; column does not allow nulls. INSERT fails.
Run Code Online (Sandbox Code Playgroud)
我以前在纯Hibernate中使用它,但我有意识切换到JPA并且不知道如何告诉它该列被假设在数据库端生成.请注意,我仍然使用Hibernate作为我的JPA持久层.