我继承了一些使用Hibernate的Java代码.使用此代码的一些人现在报告说他们在整个地方都获得了NullPointerExceptions.
我已经能够跟踪它了,发现当我们执行一个从数据库中提取对象列表的查询时,它有一个对象列表(从另一个表中提取)Hibernate似乎在list(NULL值).所以列表可能看起来像这样:
Object
Object
NULL
Object
Run Code Online (Sandbox Code Playgroud)
我们用来从数据库中提取信息的代码是:
List<PrinterGroup> groups =
this.getSession().createQuery( "from PrinterGroup" ).list();
Run Code Online (Sandbox Code Playgroud)
然后在每个PrinterGroup内部是一个包含NULL值的过滤器列表.
虽然我可以到处找到每个实例,但是我们遍历这个列表并添加一个NULL检查我觉得它是一个bandaid修复,并且必须有一种方法告诉Hibernate不要拉空值.
编辑:
EDIT2:
所以数据库似乎令人困惑.PrinterGroup - > Filter关系是一对多关系.所以PrinterGroups有一个过滤器列表.问题是,当数据库出来时,过滤器列表中包含空值(顺便说一下,数据库中没有空值),列表如上所示.
EDIT3:
这是PrinterGroup HBM中的映射relavant picese
<subclass name="PrinterGroup" discriminator-value="PG">
<list name="filters"
lazy="true"
table="PG_FILTER"
inverse="false"
cascade="all-delete-orphan">
<key>
<column name="PG_ID" not-null="false"/>
</key>
<index column="LISTPOSITION"/>
<one-to-many class="Filter"/>
</list>
Run Code Online (Sandbox Code Playgroud)
Filter是一个非常基本的POJO映射.
在使用超时值调用join并且超时通过后,Java线程处于什么状态.例如,您有以下代码:
Thread thread = new Thread();
thread.start();
thread.join(TIMEOUT);
Run Code Online (Sandbox Code Playgroud)
并且超时传递并且线程没有返回状态是什么?我需要注意什么才能确保我不泄漏线程.我最初的假设是在加入调用之后执行以下操作:
if (thread.isAlive())
{
thread.interrupt();
thread = null;
}
Run Code Online (Sandbox Code Playgroud)
检查线程是否仍在运行,如果是,则中断它,然后将其清零以确保它被垃圾收集.
我想使用.NET 4.0将我的DataGridView类中的列绑定到C#中的第二级对象中的条目.例如:
我有对象A:
public class A
{
public long id;
public B bClass;
}
Run Code Online (Sandbox Code Playgroud)
和对象B.
public class B
{
public long id;
public string name;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将类A的列表声明为DataGridView上的数据源,但是将其中一列绑定到B类中的name属性?
我把它提炼了一点,但希望这不会令人困惑.谢谢您的帮助!
我目前正在尝试在多个基于JVM(Grails,Servlets)的Web应用程序上实现单一登录解决方案,这些Web应用程序当前都部署在同一个servlet容器中(目前是Tomcat,但不希望将我的解决方案仅限于Tomcat).所有Web应用程序共享一个公共数据库
我已经看过使用CAS或其他第三方库创建新的Web服务来处理单点登录的各种选项,但似乎没有一个真正满足业务需求.我当前的实现涉及创建一个新的jar库,它具有AuthenticationProviders的通用实现,以及基于Spring Security的预身份验证过滤器.
在这种方法中,我有多个AuthenticationProviders(当前是Active Directory和Database)供应用程序进行身份验证.验证成功后,将在包含用户的会话表,过期时间和令牌中插入一行.令牌也将作为cookie存储在用户的计算机上,并用于验证它们在预认证过滤器中是否具有当前会话.
在我想要确保我没有创建一个巨大的安全问题之前从未这样做过,我也想知道创建令牌需要什么?此时一个简单的GUID似乎足够了吗?
目前我们正在开发Spring Security 3.0.x,尚未升级到3.1.
提前致谢.
我已经开始涉足C#.NET和NHibernate了,我终于陷入了一个我似乎无法弄清楚的例外,谷歌没有帮助.
我得到一个NHibernate.DuplicateMappingException:我的Parent类上的重复类/实体映射.下面是我的父类的映射文件,以及使用Parent类的Youth类:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Surrix.Cerberus.YouthData"
namespace="Surrix.Cerberus.YouthData.Domain">
<class name="Parent">
<id name="parentId">
<generator class="guid" />
</id>
<property name="firstName" not-null="true" />
<property name="lastName" not-null="true" />
<property name="homePhone" />
<property name="parentEmail" />
<property name="relationshipToYouth" />
<!-- Address component that should map to the Address class -->
<component name="parentAddress">
<property name="street" />
<property name="state" />
<property name="zipCode" />
<property name="city" />
</component>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
以下是青年班的相关部分(相当大)
<set name="YouthParents" table="YouthParents" cascade="none">
<key column="youthId" />
<many-to-many column="parentId" class="Parent"/>
</set>
Run Code Online (Sandbox Code Playgroud)
只有其他的东西是Youth类也有firstName和lastName属性,但我看不出这是一个问题.
我来自Java背景,我看到很多人都说命名空间=包,但是看看可用的代码,我觉得人们不会像使用包那样使用命名空间.
目前我正在研究一个DLL来管理我对两个Windows应用程序之间共享的数据库的所有数据访问.到目前为止,我一直在创建像Java一样的软件包,所以我有一个Domain,Services,DAO(我把它称为Repositories)子命名空间从我的顶级.它是否正确?是否有人为命名空间编写了最佳实践?我认为这可能是一个非常小的问题,但我不想反对谷物这样说.
我目前正在编写一个工具,以插入使用Hibernate的现有企业应用程序中。我的工具在安装时需要将一些值写入数据库,其中的一列是设置描述符对象的序列化版本。该对象有两个对象列表和一些基本类型。
我目前的做法是创建ByteArrayOutputStream和ObjectOutputStream然后写ObjectOutputStream到ByteArrayOutputStream,然后将得到的字节数组通过与Spring的1SimpleJdbcTemplate1的SQL。我目前使用此方法的问题是,当企业工具拉动我的行时,它无法使用以下命令反序列化该列:
org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
Run Code Online (Sandbox Code Playgroud)
我觉得我可能需要序列化内部对象,但是不知道如何做到这一点并将所有内容保持在一起。
我有一个Java应用程序,我需要使用JNA调用Windows DLL.我需要实际调用该函数采用一个__int64(在内部它分裂成所述的低/高部分的本FILETIME结构).给定一个java.util.Date对象,我如何将其转换为适合的格式FILETIME?