小编Ano*_*nym的帖子

Hibernate - 映射属于其他两个对象的对象(具有 2 个父对象的对象)

我在映射以下内容时遇到了一些麻烦:

public class Operation {
  private Integer id;
  private String name;
  private List<Item> items = new ArrayList<Item>();
  //set/getters/hashcode/etc. omitted

  public void addItem(Item i,Operation end) {
     i.setOperationStart(this);
     i.setOperationEnd(end};
     items.add(i);
     end.getItems().add(i);
   }

public class Item {
  private Integer id;
  private String name;
  private Operation  operationStart;
  private Operation  operationEnd;
  //set/getters/hashcode/etc. omitted
}
Run Code Online (Sandbox Code Playgroud)

所以基本上一个操作有一堆项目,一个项目属于2个操作。此外,如果其中一项操作不存在,则项目存在也没有意义,即如果我删除其中一项操作,我还想从它存储的其他任何地方删除该项目。

有没有人有关于我如何映射上述类的指针,或者可以指出一些示例,显示如何映射具有 2 个父级的子对象?

java orm hibernate

5
推荐指数
1
解决办法
1866
查看次数

使fgets在linux上发出更长的read()调用

我正在阅读相当大的行(最多128K)文本fgets.我在服务器上看到过多的上下文切换,使用strace我看到以下内容:

read(3, "9005 10218 00840023102015 201008"..., 4096) = 4096
Run Code Online (Sandbox Code Playgroud)

即一次fgets读取4096字节的块.有什么方法可以控制fgets调用时块的大小read()

c linux stdio

5
推荐指数
1
解决办法
590
查看次数

将SQL查询存储在数据库中是一件坏事吗?

我们正在考虑将SQL查询存储在单独的表中.这些查询仅用于报告目的.针对不同报告的不同查询 - 此外,查询将包含占位符,因此我们可以格式化或使用Winforms前端的预准备语句(它是一个简单的2层报告应用程序),例如格式化要报告的日期范围.

我对此有一些复杂的感觉 - 将SQL存储在表中是否可以,客户端将获取并运行?

sql

5
推荐指数
1
解决办法
2811
查看次数

mysql 、 bigint 或decimal 用于存储大于 32 位但小于 64 位的值

我们需要存储最多 2^38 的整数值。有什么理由使用decimal(12,0)还是应该使用bigint?

mysql

5
推荐指数
1
解决办法
2750
查看次数

HibernateDaoSupport,事务没有回滚

我正在使用Spring + Hibernate和PostgreSQL的一些"手动"事务管理我想尝试这一点,并在转向基于aop的事务管理之前理解它是如何工作的.

@Repository
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {

    @Override
    public void saveUser(User u) {
        Transaction tx = getSession().beginTransaction();
        getHibernateTemplate().saveOrUpdate(u);
        tx.rollback();

    }
}
Run Code Online (Sandbox Code Playgroud)

在这里调用saveUser,我假设保存一个新用户将被回滚.但是,移动到psql命令行后,用户将保存在表中.

为什么不回滚,我需要配置什么以这种方式进行交易?

编辑; 多一点调试似乎表明getHibernateTemplate()使用的不同于getSession()返回的会话(?)

将代码更改为

Transaction tx = getSession().beginTransaction();
getSession().persist(u);
tx.rollback();
Run Code Online (Sandbox Code Playgroud)

并且事务确实被回滚.但我仍然不明白为什么hibernateTemplate会使用/创建一个新会话.

java spring hibernate

5
推荐指数
1
解决办法
3696
查看次数

在python词典中查找匹配(x,y)或(y,x)的元组

我有一把(x,y)钥匙的字典,(x,y)意思相同(y,x),我该怎么做?

我可以:

>>> d = {(1,2): "foo"}
>>> i = d.get(2,1)
>>> if i is None:
...     i = d.get((1,2))
...
>>> i
'foo'
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,所以直接d.get((2,1))匹配密钥(1,2)?理想情况下,我想插入例如,(2,1)而不是与(1,2)键不同.

python

5
推荐指数
1
解决办法
589
查看次数

LINQ(对象),在同一个IEnumerable上运行几个查询?

是否有可能在同一个IEnumerable上链接几个LINQ查询?

一些背景,

我有一些文件,大小为20-50Gb,它们不适合内存.有些代码会解析来自这样一个文件的消息,基本上可以:

 public IEnumerable<Record> ReadRecordsFromStream(Stream inStream) {
            Record msg;
            while ((msg = ReadRecord(inStream)) != null) {
                yield return msg;
            }
        }
Run Code Online (Sandbox Code Playgroud)

这允许我对记录执行有趣的查询.例如,找到记录的平均持续时间

 var records = ReadRecordsFromStream(stream);
 var avg = records.Average(x => x.Duration);
Run Code Online (Sandbox Code Playgroud)

或者也许是每小时/分钟的记录数

var x = from t in records 
    group t by t.Time.Hour + ":" + t.Time.Minute into g
    select new { Period = g.Key, Frequency = g.Count() };
Run Code Online (Sandbox Code Playgroud)

还有十几个我想运行的查询来从这些记录中提取相关信息.一些简单的查询当然可以组合在一个查询中,但这似乎很快就变得难以置信.

现在,每次运行这些查询时,我都必须从头开始读取文件,重新编写所有记录 - 解析20Gb文件20次需要花费时间,这是浪费.

我能做些什么才能只对文件进行一次传递,但对它运行几个linq查询?

c# linq

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

Java没有真正属性的缺点是什么?

所以,经常说它是Java的一个缺点,它没有像C#这样的属性

如果Java获得属性的"本机"支持,那么我们可以获得比getXX/setXX java-bean样式属性更大的优势吗?

java

0
推荐指数
1
解决办法
370
查看次数

标签 统计

java ×3

hibernate ×2

c ×1

c# ×1

linq ×1

linux ×1

mysql ×1

orm ×1

python ×1

spring ×1

sql ×1

stdio ×1