小编Boz*_*zho的帖子

Hibernate不允许带有int字段的嵌入对象为null?

Hibernate不允许我持久化包含带有整数字段的空嵌入对象的对象.例如,如果我有一个名为Thing的类看起来像这样

@Entity
public class Thing {

    @Id
    public String id;

    public Part part;

}
Run Code Online (Sandbox Code Playgroud)

Part是一个嵌入式类,看起来像这样

@Embeddable
public class Part {

    public String a;    

    public int b;

}
Run Code Online (Sandbox Code Playgroud)

然后尝试使用null Part持久保存Thing对象会导致Hibernate抛出异常.特别是这段代码

Thing th = new Thing();
th.id = "thing.1";
th.part = null;
session.saveOrUpdate(th);
Run Code Online (Sandbox Code Playgroud)

导致Hibernate抛出此异常

org.hibernate.PropertyValueException: not-null property references a null or transient value: com.ace.moab.api.jobs.Thing.part
Run Code Online (Sandbox Code Playgroud)

我的猜测是发生了这种情况,因为Part是一个嵌入式类,所以Part.a和Part.b只是Thing数据库表中的列.由于Thing.part为null,Hibernate希望将thing.1的行的Part.a和Part.b列值设置为null.但是,Part.b是一个整数,Hibernate不允许数据库中的整数列为null.这是导致异常的原因,对吧?

所以我正在寻找这个问题的解决方法.我注意到使Part.b成为一个Integer而不是一个int似乎有效,但是由于我不会厌烦你,这对我们来说不是一个好选择.谢谢!

java orm hibernate jpa

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

如果它迫使你留在当地,为什么要使用rebase?

我很抱歉提出关于合并与rebase的哲学辩论,但我有一个实际问题,关于典型的公司工作流程(不是开源项目工作流程,可能会有所不同).

垫底,因为在这里指出,不应该,如果您有推更改使用.这是如此,因为其他人可能已从你的分支分支,然后重写该分支的历史(通过强制推动)将使他们很难.

因此,使用变基的正确方法是仅在本地提交.但至少在我的简短经历中,这是不可取的:

  • 如果你的电脑被盗怎么办?
  • 如果由于磁盘故障导致数据丢失怎么办?
  • 怎么样你必须在两个地方工作(比如这个人)

将功能分支保持在本地对我来说是违反直觉的.不仅由于以上几点,而且由于以下用例:您正在开发一项功能,但要么被拖到更紧急的地方,要么去度假,或者生病.一位同事必须完成它.然后你改变并推动(除非你生病,在这种情况下,它保持在本地,没有人可以完成它),而另一个人完成它.

在此期间,主人有变化.但是另一个人已经基于一个远程分支,所以他应该使用merge,rebase和force-push(如果其他人同时将其分支基于那个分支,那么这可能会使事情变得棘手).

这听起来像边缘情况,但它们不是.这些条件中的至少一个(在家工作,生病,去度假,完成别人的工作等)经常发生.

那么,使用"rebase"是进入这些用例的好方法,还是合并(使用额外的"merge commit")是更安全,更直接的选择?

git

11
推荐指数
2
解决办法
470
查看次数

将列表的元素转换为字符串

我想获取存储在列表中的元素的字符串文本List<Car>.toArray()和toString()方法是最好的选择吗?

java string collections list

10
推荐指数
5
解决办法
5万
查看次数

已删除的实体已传递给持久异常

我有这种实体:

文件| n ..到.1 | DocumentType | 1 ..到.. n | PropertyType | 1 ..到.. n | DocumentProperty

我只是尝试删除一个文件,如:entityManager.remove(document);

但错误是触发:

16:45:51,499 ERROR [[Seam Resource Servlet]] servlet的Servlet.service()Seam资源Servlet抛出异常javax.persistence.EntityNotFoundException:传递给persist的已删除实体:[up.docstore.PropertyType#]

问题似乎来自这里:

@OneToMany(mappedBy = "documentType", cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@ForeignKey(name = "FK_DOCUMENT_TYPE__PROPERTY_TYPE")
@Sort(type = SortType.NATURAL)
private SortedSet<PropertyType> propertyTypes = new TreeSet<PropertyType>();
Run Code Online (Sandbox Code Playgroud)

如果我删除CascadeType.PERSIST所有它的工作.但我需要它,我也需要它.

有谁知道其他解决方案?

编辑:删除DELETE_ORPHAN级联,但仍然是同样的问题.

java hibernate jpa

10
推荐指数
2
解决办法
3万
查看次数

搜索javadoc时如何获取最新的搜索结果

最近我发现很多人仍然提供1.4.2的javadocs链接.这不是一个很好的做法,我想提出这个问题.

发生这种情况是因为搜索引擎(至少谷歌)会提供旧的javadoc(如果有人搜索),比方说, java.lang.String

那么,如何获得正确(当前1.6)版本的JDK的javadoc?

java javadoc

10
推荐指数
1
解决办法
269
查看次数

JSP,GET和POST参数

我需要用JSP做一些小任务; 对JSP非常陌生我想知道是否有可能只从HTTP请求中获取GET或POST参数.

我见过ServletRequest.getParameter(和alikes)但看起来这些方法同时获得了GET 和 POST参数.有没有办法只获取其中一个,而无需自己解析URL或请求体?如果没有,是否有任何优先规则值覆盖哪些(如POST参数总是覆盖GET参数)?

java jsp servlets

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

如何在Web应用程序中重新加载资源包?

我有资源包作为Java类从数据库中读取值.当我更新数据库我需要重新加载包,但我不知道如何.有人帮忙吗?

package model.helpers;
public class Messages_en extends ListResourceBundle {
      protected Object[][] getContents() {
            // from DB
            // ...
      }
}
Run Code Online (Sandbox Code Playgroud)

在视图中我使用bundle如下:

<f:loadBundle basename="model.helpers.Messages" var="m" />
Run Code Online (Sandbox Code Playgroud)

java jsf web-applications jsf-2

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

"J2EE"或"Java EE"如何发音

对于所有那些J2EE/Java EE开发人员,当你在现实世界中与人交谈时,你说

我是一个杰伊两个ee ee程序员

要么

我是一个杰伊两个程序员

要么

我是一名java企业程序员

要么

我是一名企业java程序员

或者是其他东西?

java terminology java-ee

10
推荐指数
2
解决办法
6479
查看次数

collection vs list vs arrays作为EJB方法的返回类型

我最近被告知,集合应该优先于List作为EJB方法的返回值.这个论点是,通常集合更通用,即允许您在不影响客户端的情况下更改基础数据结构.如果这是您希望作为设计师的灵活性,那么使用集合将更有意义.但是,返回一个数组而不是集合会不会更有意义?

什么是性能影响,如果有的话?

提前致谢.

java collections ejb java-ee

10
推荐指数
2
解决办法
8487
查看次数

自动连接的依赖项未在Spring MVC中的Aspect中注入

我无法@Autowire在Aspect中使用服务层实例.在Aspect中,对@Autowiredbean 的引用是NULL并且它会抛出NullPointerException.任何帮助都感激不尽.我想,我搞砸了配置.

以下是我的servlet-context.xml:

<!-- Activates various annotations to be detected in bean classes -->
<context:annotation-config />
<context:spring-configured />       

<!-- Scans the classpath of this application for @Components to deploy as beans -->
<context:component-scan base-package="xx.yy" />

<!--  an @AspectJ aspect will be interpreted as an aspect by Spring AOP and beans in the context will be advised accordingly -->
<aop:aspectj-autoproxy />

<beans:bean id="loggingAspect" class="xx.yy.aop.aspects.LoggingAspect" />
<beans:bean id="authenticationAspect" class="xx.yy.aop.aspects.AuthenticationAspect" />

<!-- Enables the Spring …
Run Code Online (Sandbox Code Playgroud)

aop aspectj spring-mvc spring-aop

10
推荐指数
1
解决办法
8974
查看次数