小编Dyt*_*tut的帖子

使用mybatis保存/更新集合,通常的做法是什么?

我决定尝试将mybatis用于新项目.我对SQL非常熟悉,最近我对hibernate有一些不好的经历,所以我正在寻找一种更低级的DAO方法.

似乎相当不错,除了一件事,那就是处理集合.

我有两个POJO,组和用户,它们是多对多的.我已经决定了一个设计理念,即拥有集合的POJO应该只在保存时更新表之间的MM关系.因此,例如,当我保存具有用户集合的组对象时,设计理念规定应该已经保存用户,并且我只需要在数据库中保存组和group_user关系.

所以,对于界面中的saveGroup函数,我为mybatis做了这个XML映射:

    <insert id="saveGroup" keyColumn="id"
    parameterType="se.myapp.domain.Group">
    <choose>
        <when test="id == null">
        INSERT INTO myapp_group (name, description)
        VALUES
        (#{username}, #{password});
        </when>
        <otherwise>
        UPDATE myapp_group set name=#{name}, description=#{description}
        where id=#{id};
        </otherwise>
    </choose>

    <if test="users != null">
        create temporary table tmpnewgroups (group_id integer, user_id integer);

        insert into tmpnewgroups (group_id, user_id) values (
        <foreach collection="users" item="user" open="" close="" separator="),()">
             #{id},#{user.id}
        </foreach>
        );

        insert into myapp_user_group(group_id, user_id) 
        select tmp.group_id, tmp.user_id 
        from tmpnewgroups tmp 
        left outer join myapp_user_group ug 
            on ug.group_id = tmp.group_id and …
Run Code Online (Sandbox Code Playgroud)

java persistence ibatis mybatis

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

如何在eclipse中关闭项目的javascript支持?

所以,这就是问题所在.

我使用eclipse进行PHP项目,其中我们使用smarty模板来格式化html.有一天,我正在制作一个小的javascript并尝试使用通常的ctrl-space来完成代码.我得到了弹出窗口,询问我是否要为项目添加javascript支持,我想"好吧,我至少可以尝试一下,看看它是如何工作的".事实证明这是一个非常糟糕的主意,因为编辑html/smarty模板现在非常慢.

当我检查项目设置时,我有一个Javascript部分,我已经尝试过大多数事情,但我似乎无法一起禁用它.

那么,在我错误地激活它之后,我是如何禁用javascript支持的任何想法?

javascript php eclipse eclipse-plugin

9
推荐指数
2
解决办法
7862
查看次数

psql控制台不接受本地化

我在其中一台机器上遇到了一个奇怪的问题.

这是Debian Squeeze的全新安装,Postgres 8.4.10.

我在机器上安装了一些本地化,locale -a给出了:

C
en_US
en_US.iso88591
en_US.utf8
POSIX
swedish
sv_SE
sv_SE.iso88591
sv_SE.utf8
Run Code Online (Sandbox Code Playgroud)

在常规的Linux控制台中,我可以使用瑞典语本地化(åäöworks),但是当我进入psql控制台时,我无法使用本地化字符.无论我如何配置我的终端(尝试了我能想到的每一种编码).

数据库本身工作正常,我可以通过创建一个SQL文件并在那里保留插入来输入本地化的字符.这不是最有效的方式;-)

之前没有遇到过这个问题,我安装了不少机器.有没有人知道这可能是什么原因?

linux postgresql console debian psql

6
推荐指数
1
解决办法
941
查看次数

复合键的Hibernate标准问题

我得到了这个hibernate映射:

<class name="CoverageTerm" table="coverage_term">

    <composite-id name="id" class="CoverageTermPK">
        <key-many-to-one name="productTerm" class="ProductTerm">
            <column name="termtype_id"></column>
            <column name="product_id" ></column>
        </key-many-to-one>
        <key-many-to-one name="productCoverage" class="ProductCoverage" column="product_coverage_id"></key-many-to-one>
    </composite-id>

    <property name="data"/>
</class>
Run Code Online (Sandbox Code Playgroud)

这是一个简单的复合键映射,它与表productCoverage和productterm的复合键关系有关.

现在问题来自我的搜索功能:

public CoverageTerm getCoverageTermFromProductTermCoverage(ProductTerm productTerm, ProductCoverage productCoverage) {
    Criteria critCt = getSession().createCriteria(CoverageTerm.class);
    Criteria critCtId = critCt.createCriteria("id");
    critCtId.add(Restrictions.eq("productTerm", productTerm));
    critCtId.add(Restrictions.eq("productCoverage", productCoverage));
    return (CoverageTerm) critCt.uniqueResult();
}
Run Code Online (Sandbox Code Playgroud)

这应该让我在"id"(这是主键,CoverageTermPK)上创建一个子标准并对其添加限制,但是当我运行它时,我收到错误消息:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.QueryException: could not resolve property: productTerm of: CoverageTerm
Run Code Online (Sandbox Code Playgroud)

这感觉很奇怪,不应该在那里得到CoverageTermPK吗?如果我尝试使用"data"属性的子标准来标准工作,我似乎无法在"id"子标准上获得PK.

关于为什么会发生这种情况的任何想法?

java spring hibernate composite

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